这看起来很简单,但我无法让它发挥作用。
我有一个非常简单的网络服务器,只需要做两件事:
- example.com/status.html 返回本地文件(有效)
- example.com/atom 将在同一台机器上运行的防火墙服务器的内容重定向到端口 4000
这不起作用:
RewriteRule ^$ http://localhost:4000
从请求者的角度(即在客户端的机器上)将流量重定向回 localhost:4000。
我对 VirtualHost 的理解有限,它指的是 atom.example.com,而不是 example.com/atom
我想我必须使用 ProxyReverse,但我找不到正确的组合。
更新:尝试 Shane Madden 给出的 ProxyPass/ProxyReverse 建议会在错误日志文件中产生以下结果:
[Thu Mar 15 11:59:15 2012] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:4000 (localhost) failed
[Thu Mar 15 11:59:15 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Mar 15 11:59:17 2012] [error] proxy: HTTP: disabled connection for (localhost)
(本地服务器肯定是运行在127.0.0.1:4000上)
答案1
除非有理由,否则不要使用 mod_rewrite。
尝试一下这个(将其放入<VirtualHost>
块中):
ProxyPass /atom http://127.0.0.1:4000/atom
ProxyPassReverse /atom http://127.0.0.1:4000/atom