Apache 多个 URI 的反向代理

Apache 多个 URI 的反向代理

使用apache反向代理时,是否可以转发http://somesite.com/http://somesite.com/foo到不同的服务器?比如说一个http://内部服务器1/另一方则http://内部服务器2/foo

我显然可以直接沿着这条路走下去(即http://somesite/bar) 但这并不可取。

答案1

看来 vhost 中的指令顺序很重要。是的 - 你可以实现你需要的。我只是运行测试:

ProxyPass /q http://host.one.com/img/
ProxyPass / http://another.host/

一切运行正常——除了指向 /q/something 的请求,所有请求都被代理到了 another.host。指向 /q/whatever 的请求则被转到 host.one.com。

答案2

您应该能够使用 mod_rewrite 执行此操作。它会按顺序评估条件,您可以指定 [L] 标志以使其停止处理进一步的规则。

RewriteEngine On
RewriteRule /foo/(.*) http://internalserver2/foo/$1 [P,L]
RewriteRule /(.*)     http://internalserver/$1 [P]

完整的 mod_rewrite 文档位于http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

相关内容