Apache 2.2 虚拟主机 + Tomcat 7 应用程序
Posted
技术标签:
【中文标题】Apache 2.2 虚拟主机 + Tomcat 7 应用程序【英文标题】:Apache 2.2 Virtual hosts + Tomcat 7 applications 【发布时间】:2013-01-13 11:35:06 【问题描述】:我在同一台机器上安装了一台 apache 服务器 和一台 tomcat 7 服务器。 apache 服务器使用并配置了启用的虚拟主机,因为它应该为多个 php 网站提供服务器。 但是,我们还需要为一些 tomcat 应用程序提供服务,因此我们需要配置 ajp 连接器。
一切顺利,我已经成功配置了多个服务于 tomcat 应用程序的 apache 虚拟主机,但我只有一个问题:
通过 apache 虚拟主机访问 java 应用时不维护会话变量。这在直接连接到 tomcat 服务器的 8080 端口时效果很好。
我可以在每个应用程序的 tomcat 管理器中看到,每次从 apache 虚拟主机刷新页面时,会话数都会增加。
java应用部署在tomcat的/webapps/testapp文件夹下。
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 会话没有通过代理工作。我怎样才能让它工作?是不是我的配置有问题?
【问题讨论】:
wiki.jenkins-ci.org/display/JENKINS/… 【参考方案1】:所以解决方案是为 apache VHost 添加 onother 指令:
ProxyPassReverseCookiePath /testapp /
这样cookie的头部不会被损坏,tomcat会看到会话正常。
【讨论】:
以上是关于Apache 2.2 虚拟主机 + Tomcat 7 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 Tomcat 的情况下在 Apache 2.2 上运行 Java 应用程序?
Apache 2.2 忽略 VirtualDocumentRoot 虚拟主机?
(RC 4.3.4)中的rich:fileUpload 组件在Apache Tomcat7 和JSF 2.2 上工作吗? :“无法读取请求序言”
在 Apache Tomcat 7.0.42 及更高版本上部署 Mojarra 2.1.x 和 2.2 会导致 java.lang.UnsupportedOperationException