我在同一台计算机上安装了一台 apache服务器和一台 tomcat 7 服务器。 apache服务器使用并配置启用虚拟主机,因为它应该服务于多个php网站。 但是,我们还需要提供一些tomcat应用程序,因此我们需要配置ajp连接器。
一切顺利,我已成功配置多个服务于tomcat应用程序的apache虚拟主机,但我只有一个问题:
通过apache虚拟主机访问Java应用程序时,不会维护会话变量。当直接连接到tomcat服务器的8080端口时,这非常有效。
我可以在tomcat管理器中看到每个应用程序的会话数随着apache虚拟主机中每次刷新页面而增加。
java应用程序部署在/ webapps / testapp文件夹中的tomcat中。
tomcat服务器xml有一个ajp连接器,描述为:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
maxThreads="300" minSpareThreads="10" enableLookups="false"
tcpNoDelay="true" tomcatAuthentication="false" URIEncoding="UTF-8" />
apache webserver包含虚拟主机:
<VirtualHost *:80>
ServerName testapp.com
ServerAlias *.testapp.com
ProxyPreserveHost on
ProxyRequests off
ProxyPass / ajp://localhost:8009/testapp/
ProxyPassReverse / ajp://localhost:8009/testapp/
</VirtualHost>
所以使用tomcat的Apache代理工作正常。问题是jsp会话没有通过代理工作。我怎样才能使它工作?我的配置有问题吗?
答案 0 :(得分:8)
所以解决方案是为apache添加另一个指令VHost:
ProxyPassReverseCookiePath /testapp /
这样,cookie的标题不会被破坏,tomcat会看到会话正常。