7

我在同一台机器上安装了一台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 网络服务器包含虚拟主机:

<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 会话没有通过代理工作。我怎样才能让它工作?我的配置有问题吗?

4

1 回答 1

8

所以解决方案是为 apache VHost 添加 onother 指令:

ProxyPassReverseCookiePath /testapp /

这样 cookie 的标头就不会被损坏,并且 tomcat 会看到会话正常。

于 2013-01-30T13:01:05.550 回答