有什么方法可以使用HTTP代理将Apache连接到Tomcat,从而使Tomcat获得正确的传入主机名而不是localhost?我在apache中使用此指令:
ProxyPass /path http://localhost:8080/path
但是它是作为本地主机通过的,当我们在同一服务器上有很多站点时,这是没有用的。我可以在服务器配置中手动设置主机:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" proxyName="pretend.host" proxyPort="80" />
但这又一次不只为一个站点提供服务。而且我不喜欢为每个站点使用不同的内部端口的想法,这听起来很丑陋。
代理时无法转移端口吗?
(如果您问为什么我不仅仅使用AJP,答案就是这个错误。在完全弃Tomcat和Apache之前,我会尽一切努力)
您正在寻找的设置是:
<VirtualHost *:80> ServerName public.server.name ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>
请注意,我们使用localhost作为代理目标。因为启用了ProxyPreserveHost,所以我们可以这样做。该文件指出
它在特殊的配置(例如基于质量的代理虚拟主机)中非常有用,其中原始Host标头需要后端服务器评估。
听起来就像您在做什么。