如何正确设置Apache HTTP - Tomcat配置

时间:2012-05-18 11:24:31

标签: apache tomcat reverse-proxy mod-proxy server.xml

我已经使用Apache HTTP和Tomcat构建了一个设置,它通过mod_proxy相互通信。我已粘贴下面使用的配置。我遇到的问题是会话丢失,我认为这与不正确的代理配置有关。我读了很多文章,但仍然无法弄清楚我做错了什么。

的httpd.conf:

<VirtualHost MACHINE_IP:80>
  ServerName www.mydomain.com
  ProxyRequests Off
  ProxyPass /apps/my_app http://MACHINE_IP:8080/my_app
  ProxyPassReverse /apps/my_app http://MACHINE_IP:8080/my_app
  Header set P3P "CP=\"HONK\""
</VirtualHost>

<VirtualHost MACHINE_IP:443>
  ServerName www.mydomain.com
  ProxyRequests Off
  ProxyPass /apps/my_app https://MACHINE_IP:8443/my_app
  ProxyPassReverse /apps/my_app https://MACHINE_IP:8443/my_app

  Header set P3P "CP=\"HONK\""
</VirtualHost>

Tomcat(在MACHINE_IP上)在通常的端口8080和8843上运行,并配置如下(我认为这是默认配置):

<Server port="8005" shutdown="SHUTDOWN">

  <Service name="Catalina">

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               />

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
                keystoreFile="cert/tomcat.keystore"
                keystorePass="password"
               />

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

      </Host>
    </Engine>
  </Service>
</Server>

奇怪的是,当我在server.xml中配置任何proxyName和proxyPort,并且还为主机配置域名时,一切都停止工作。上面的server.xml示例正在运行,但由于某种原因会导致会话丢失。

1 个答案:

答案 0 :(得分:3)

您看到会话丢失,因为您已使用

更改了应用程序的上下文路径
ProxyPass /apps/my_app https://MACHINE_IP:8443/my_app

从httpd中的/apps/my_app到Tomcat中的/my_app。该measn Tomcat将为路径/my_app发出会话cookie,该路径不符合客户端请求的httpd。

要解决此问题,请使用ProxyPassReverseCookiePath