mod_rewrite代理多个服务器

我正在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”。