Apache 2.2 虚拟主机 + Tomcat 7 应用程序

标签 apache tomcat tomcat7 virtualhost ajp

我在同一台机器上安装了一台apache 服务器 和一台tomcat 7 服务器。 apache 服务器被使用并配置为启用虚拟主机,因为它应该为多个 php 网站提供服务。 但是,我们也需要为一些 tomcat 应用程序提供服务,因此我们需要配置 ajp 连接器。

一切顺利,我已经成功配置了多个为 tomcat 应用程序提供服务的 apache 虚拟主机,但我只有一个问题:

通过apache 虚拟主机访问java 应用程序时不维护 session 变量。这在直接连接到 tomcat 服务器的 8080 端口时非常有效。

我可以在 tomcat 管理器中看到每个应用程序的 session 数随着每次从 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>

所以 Apache 代理与 tomcat 工作正常。问题是 jsp session 不通过代理工作。我怎样才能让它发挥作用?是我的配置有问题吗?

最佳答案

所以解决方案是为 apache VHost 添加另一个指令:

ProxyPassReverseCookiePath /testapp /

这样 cookie 的 header 就不会被损坏,tomcat 会看到 session 正常。

关于Apache 2.2 虚拟主机 + Tomcat 7 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590686/

相关文章:

java - 从 GWT 和 eclipse 开始

terminal - 在终端 mac 上启动和关闭 tomcat 7 的代码是什么?

java - 如何在tomcat中跳过http基本身份验证?

tomcat - 如何在不重启 Tomcat 的情况下更改 HTML/JS/CSS?

java - 如何在同一个Tomcat上部署多个具有外部配置的Spring boot应用程序?

java - Eclipse:在调试 Java EE 时不显示变量

apache - 如何在虚拟环境中安装 mod_wsgi

apache - 将 Tomcat http 连接器限制为 Apache 服务器

php - Symfony 4 不从 vHost 配置中获取环境变量

php - 在 apache 中限制从 Internet 访问