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 虚拟主机?

Apache2 -> Tomcat 虚拟主机

(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

使用 Apache/Tomcat + 虚拟主机部署多个 grails 应用程序