![Apache 虚拟主机重定向到其他服务器](https://linux22.com/image/541375/Apache%20%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%85%B6%E4%BB%96%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
情况如下:
服务器 A 托管“http://internal.intranet“
服务器 B 托管内部应用程序“http://服务器名称b.intranet/foo/bar“
服务器 A 需要将所有传入的 http 流量重定向到服务器 B 的地址,而用户不会注意到。
我可以使用以下配置文件轻松完成此操作:
<VirtualHost 10.0.4.26>
ServerName internal.intranet
ServerAlias internal
RewriteEngine on
# Deny TRACE/TRACK request methods
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
#RewriteRule "^/files(.*)$" "/files$1" [L]
# Everything else not matched above needs to go to the servlet container
# via HTTP listening on port 8008. The [P] flag (which is required)
# implies that our requests will be handled by mod_proxy.
RewriteRule "^/(.*)" "http://servernameb.intranet:8080/foo/bar/$1" [P]
</VirtualHost>
但问题是用户浏览器中显示的url是:http://服务器名称b.intranet..... 代替http://internal.intranet
我不希望用户接触servernameb地址。
我知道我可能需要使用 ProxyPass 和 ProxyPassReverse 但我就是无法让它工作。
答案1
您应该尝试以下操作:
<VirtualHost 10.0.4.26>
ServerName internal.intranet
ServerAlias internal
ProxyPass / http://servernameb.intranet/foo/bar/
ProxyPassReverse / http://servernameb.intranet/foo/bar/
</VirtualHost>