【问题标题】:Reverse proxy just the homepage反向代理只是主页
【发布时间】:2012-05-09 10:57:25
【问题描述】:

我正在尝试仅反向代理网站上的主页 - 尝试使用以下规则。基本上我有一个备用页面,我希望内容来自服务器,但我仍然希望站点的原始 URL 与来自反向代理的内容一起显示。两个页面都在同一个域中 - 唯一的区别是一个是 www.domain.com 而另一个页面是 www2.domain.com

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
ProxyPass http://www.domain.com http://www2.domain.com/
ProxyPassReverse http://www.domain.com  http://www2.domain.com/

当我在上面设置规则时,它不起作用 - 有人可以指出我哪里出错了吗?

【问题讨论】:

  • RewriteCond 对代理规则没有影响,它只用于 mod_rewrite 规则。因此,如果您要使用 mod_proxy,您可以完全删除该行。解释到底发生了什么也会对您有所帮助 - 您的规则根本没有任何影响,还是它们做了一些事情但不是您所期望的?
  • 我虽然不得不放入 RewriteCond 因为我只希望反向代理发生在首页例如www.domain.com 而不是其他任何东西,例如www.domain.com/sales 等 ....当我把规则放在什么都没有发生时,首页仍然是从其原始位置提供的 - 不是代理的......希望我能更好地解释这一点...... . 感谢您的宝贵时间...

标签: mod-rewrite url-rewriting reverse-proxy


【解决方案1】:

ProxyPassProxyPassReverse 的第一个参数是路径,您的指令的正确语法是

ProxyPass / http://www2.domain.com/
ProxyPassReverse /  http://www2.domain.com/

但这会代理您的所有请求。试试

#disable forward requests
ProxyRequests Off

#allow proxy requests
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

#reverse proxy 
RewriteEngine On
RewriteRule    ^/?$   http://www2.domain.com/ [P,QSA,L]

如果代理失败,您的服务器 error.log 可能会告诉您发生了什么。或者为mod_rewrite添加一个日志,它会告诉你为什么它没有捕获请求

RewriteLogLevel 5
RewriteLog /path/to/a/file

【讨论】:

  • 感谢您的帮助 ....我已经尝试过了,但它不起作用 - 当我输入规则时,系统会提示我从旧站点输入用户名和密码,就好像它正在读取 htaccess 文件一样从旧站点而不是从代理的新站点中提取内容...
  • @frodo 你必须检查你的服务器做了什么。为此,我添加了一些提示。
猜你喜欢
  • 2010-09-16
  • 2020-06-28
  • 2016-03-21
  • 2019-05-17
  • 2019-05-23
  • 1970-01-01
  • 2020-06-20
  • 2015-02-12
相关资源
最近更新 更多