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,答案是this error.我正在尝试所有可以在放弃Tomcat and Apache entirely之前)

您正在寻找的设置有:

<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.文档说明

It is mostly useful in special configurations like proxied mass name-based virtual hosting, where the original Host header needs to be evaluated by the backend server.

这听起来就像你在做什么。

http://stackoverflow.com/questions/956361/apache-tomcat-using-mod-proxy-instead-of-ajp

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Apache Tomcat:使用mod_proxy而不是AJP