1

mod_proxyを介して相互に通信するApacheHTTPとTomcatを使用してセットアップを構築しました。以下で使用する構成を貼り付けました。私が経験する問題はセッションの損失であり、これは不適切なプロキシ構成に関係していると思います。私はたくさんの記事を読みましたが、それでも私が間違っていることを理解することはできません。

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から Tomcat/my_appへ。その測定値Tomcatは/my_app、クライアントがフォームhttpdから要求しているものと一致しないパスに対してセッションCookieを発行します。

これを修正するには、ProxyPassReverseCookiePathを使用します

于 2012-05-19T19:42:26.350 に答える