有没有办法对外部 URL 使用类似 RewriteRule ... [PT] 的东西?

有没有办法对外部 URL 使用类似 RewriteRule ... [PT] 的东西?

我有一个非 Apache Web 服务器在端口 8000 上运行,但无法从企业防火墙后面访问。因此,我想使用我的 Apache 2 服务器作为此其他 Web 服务器的代理。我尝试使用:

RewriteEngine On
RewriteRule /.* http://buildbot.synergy-foss.org:8000/builders/ [PT]

...但是这不起作用;我得到:

错误的请求

您的浏览器发送了一个该服务器无法理解的请求。

但是,它运行良好[R]

更新:

此外,使用时ProxyPass,我收到此错误:

禁止

您无权访问此服务器上的/。

答案1

mod_rewrite除非有理由,否则我不建议使用代理;mod_rewrite可能更强大,但听起来你不需要它。例如,听起来你只是想要以下内容:

# Does't disable ProxyPass; but will disable everything you're not using
ProxyPass off
# Always setup a reverse proxy so that Apache can rewrite the URL
ProxyPass / http://buildbot.synergy-foss.org:8000/builders/
ProxyPassReverse / http://buildbot.synergy-foss.org:8000/builders/

确保启用 mod_proxy (文档在这里) 也一样。祝你好运!

答案2

您需要的是[P]标志,而不是[PT][PT]重写规则上写的是“通过”,允许其他处理程序进行处理(AliasRedirect等等)。

你也可以使用以下方法获得相同的结果mod_proxy,从类似以下内容开始:

ProxyPass / http://buildbot.synergy-foss.org:8000/builders/

相关内容