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