1

我已经使用 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 示例正在运行,但由于某种原因,会话丢失。

4

1 回答 1

3

您看到会话丢失是因为您更改了应用程序的上下文路径

ProxyPass /apps/my_app https://MACHINE_IP:8443/my_app

/apps/my_apphttpd 到 /my_appTomcat。这意味着 Tomcat 将为/my_app不匹配客户端从 httpd 请求的路径发出会话 cookie。

要解决此问题,请使用ProxyPassReverseCookiePath

于 2012-05-19T19:42:26.350 回答