我正在尝试将请求标头中的主机设置为"server2",以便在 ProxyPass 将请求定向到 server2 时,但在所有其他情况下保留主机(当它将其传递给 server1 时)。
<Proxy "/path1">
RequestHeader set Host server2
</Proxy>
ProxyPass /path1 http://server2/path1
ProxyPassReverse /path1 http://server2/path1
ProxyPreserveHost On
ProxyPass / http://server1/
有没有办法让 ProxyPreserveHost 对于以/path1 开头的传入 url 处于关闭状态,但对所有其他 url 将其打开?或者像我在上面的代码示例中尝试的那样更改 RequestHeader 中的主机(这不起作用)。
我在 Ubuntu 2.2.22 上使用 Apache 版本 12.04
这不是对问题的立即回答,但它是我问题的答案。
我决定尝试nginx而不是Apache 2.2,并且使用此站点可用的配置,它起作用了:
server {
listen 80;
location path1 {
proxy_set_header Host 'server2';
proxy_pass http://server2/path1;
}
location / {
proxy_set_header Host $host;
proxy_pass http://server1;
}
}
我认为Apache 2.4也支持位置。所以我仍然不知道在 Apache 2.2 中是否可行,但这对我使用 nginx 有用。