Apache:将特定 URL 重定向到不同端口上的本地服务器

Ste*_*ett 8 url reverse-proxy port-forwarding apache-2.2

这看起来很简单,但我不能让它工作。

我有一个非常简单的网络服务器,只需要做两件事:

  1. example.com/status.html 返回一个本地文件(这有效)
  2. example.com/atom 在端口 4000 上重定向在同一台机器上运行的防火墙服务器的内容

这不起作用:

RewriteRule ^$ http://localhost:4000
Run Code Online (Sandbox Code Playgroud)

从请求者的角度(即,在客户端的机器上),这将流量重定向回 l​​ocalhost: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)
Run Code Online (Sandbox Code Playgroud)

(本地服务器肯定运行在127.0.0.1:4000)

Sha*_*den 9

除非有理由,否则不要使用 mod_rewrite。

试试这个(把它放在<VirtualHost>块中):

ProxyPass /atom http://127.0.0.1:4000/atom
ProxyPassReverse /atom http://127.0.0.1:4000/atom
Run Code Online (Sandbox Code Playgroud)

  • 终于工作了。我需要更改安全设置: sudo /usr/sbin/setsebool -P httpd_can_network_connect 1 (3认同)