Apache + Tomcat:使用mod_proxy代替AJP

有什么方法可以使用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标头需要后端服务器评估。

听起来就像您在做什么。

以上是 Apache + Tomcat:使用mod_proxy代替AJP 的全部内容, 来源链接: utcz.com/qa/410752.html

回到顶部