我正在3台服务器上运行CentOS。 服务器A运行我的Apache Web服务器。 服务器B和C在不同的端口上运行其他服务器。 我试图让htt:// serverA / math /代理到htt:// serverB:8765 /但我得到的错误,我似乎无法修复。 这是我进入httpd.conf文件:
RewriteEngine On RewriteRule ^math/(.*)$ http://serverB:8765/$1 [P]
我的日志中出现以下错误:
[error] [client xx.xx.xx.xx] File does not exist: /var/www/html/math
如果我将httpd.conf更改为:
RewriteEngine On RewriteRule ^/(.*)$ http://serverB:8765/$1 [P]
所有到服务器A的stream量都被正确地redirect到服务器B,所以我知道mod_rewrite和mod_proxy正在工作。
任何人都可以指向正确的方向吗? 谢谢。
我认为你的规则应该是:
RewriteRule ^/math/(.*)$ http://serverB:8765/$1 [P]
由于它不匹配,您会收到错误消息
katriel是正确的,但你也可以使用ProxyPass / ProxyPassReverse指令。 看到这个 它的devise是以一种简单的方式来做你想做的事情。
例:
ProxyPass /math/ http://serverB:8765/ ProxyPassReverse /math/ http://serverB:8765/
半径是正确的 – 你最好使用实际的代理指令。 像这样的东西应该工作:
<Location /math> ProxyPass http://serverB:8765/ ProxyPassReverse http://serverB:8765/ </Location>
你得到的错误可能是因为你正在代理“… /math/”,而不是“… /math”。