情况如下:
服务器 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>