Tomcat 6 虚拟主机 + Apache 2 代理

Tomcat 6 虚拟主机 + Apache 2 代理

我的 Apache 和 Tomcat 配置有问题。我有一个 Apache 实例作为 Tomcat 的代理。Tomcat 提供两个虚拟主机。当一个 Apache 虚拟指向 Tomcat 中的特定虚拟时,就会出现问题。我可以在我的配置文件中显示:

在 /etc/hosts 中:

127.0.0.1       localhost
127.0.0.1       my-pages

/etc/apache/sites-enabled/my-pages.tld:

<VirtualHost *:80>
        RewriteEngine on
        ServerAdmin [email protected]
        ServerName www.my-pages.tld
        ServerAlias my-pages.tld
        ProxyPass / http://my-pages:9082/
        ProxyPassReverse / http://my-pages:9082/
        # Logs
        ErrorLog /usr/local/tomcat2/logs/error.log
        CustomLog /usr/local/tomcat2/logs/access.log common
        LogLevel debug
</VirtualHost>

<Proxy *>
  Order deny,allow
  Allow from all
  Deny from all
</Proxy>

ProxyRequests       Off
ProxyPreserveHost   Off

${CATALINA_HOME}/conf/server.xml

...
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444"
               URIEncoding="UTF-8" />
<Connector port="9082" proxyPort="80" proxyName="my-pages" />
...

<Host name="my-pages" appBase="my-pages"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      <Context path="" docBase="envelon-web" />
      <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
             prefix="my-pages_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</Host>

当我运行此配置时,www.my-pages.tld 页面指向 Tomcat 中的默认虚拟主机(而不是“my-pages”虚拟主机)。这很奇怪,因为当我在本地机器(而不是服务器上)上设置相同的配置时,它工作正常。此外,当我在 Tomcat 虚拟主机中使用域名(my-pages.tld 而不是 my-pages)时,它也能正常工作(我不想使用此配置。因为我想从外部“隐藏”Tomcat)。

您知道我错在哪里吗?或者如何解决此问题?感谢您的回复!

马特奥

答案1

我终于解决了这个问题。问题是ProxyPreserveHost被定义在指令。Apache 中定义了更多虚拟主机,其中一些虚拟主机具有“ProxyPreserveHost On”,这会影响其他主机。

我搬家了ProxyPreserveHost进入什么解决了

答案2

一般来说有两种解决方案:

  1. ProxyPreserveHost 与mod_proxy_http
  2. mod_proxy_ajp

对于虚拟主机来说,两者都可以正常工作,至于选择哪一个,则取决于个人偏好或超出这里要求的其他要求。

相关内容