使用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