共计 1927 个字符,预计需要花费 5 分钟才能阅读完成。
最近搞一个 Web 应用,主站基于 Tomcat 的 Java 应用,需要整合 PHP 论坛 Discuz
Tomcat 应用端口是 8101, apahce 端口是 80,网站域名是 www.linuxidc.com
使用 xampp 服务器,直接集成 apache 和 php 安装 discuz。
现在想达到使用 www.linuxidc.com 访问的是 tomcat 主站,使用 www.linuxidc.com/bbs 访问的是 discuz 论坛
由于 tomcat 端口是 8101,不能直接通过 www.linuxidc.com 来访问,所以需要使用 apache 的 VirtualHost 来实现
配置如下:
<VirtualHost *:80>
ProxyPass /bbs !
ProxyPass / http://linuxidc.com:8101/myweb/
ProxyPassReverse / http://linuxidc.com:8101/myweb/
ProxyPassReverseCookiePath / /
</VirtualHost>
解释
ProxyPass / http://linuxidc.com:8101/myweb/
表示访问网站根目录将进行代理访问,访问的地址是 tomcat 应用地址,需要注意的是:路径末尾必须以 / 结束,否则无法正常访问
ProxyPassReverse / http://linuxidc.com:8101/myweb/
反向代理 保持和 ProxyPass 一致
ProxyPassReverseCookiePath / /
Cookie 路径,必须配置,否则网站 session 将丢失,cookie 无法保存,此处配置表示根节点 cookie 路径为 /(也可以配置为其他如:)
ProxyPassReverseCookiePath / /myweb
ProxyPass /bbs !
表示 /bbs 目录 不进行代理访问,也就是说 bbs 使用 apache 直接访问,如果不配置该项,访问 /bbs 将会使用 tomcat 来访问
设置完以可按照预期正常访问。但是有一个问题就是,通过 http://www.linuxidc.com 和 http://linuxidc.com 会话不能保持一致,也就是说我使用 linuxidc.com 登录后,再使用
www.linuxidc.com 访问,登录会话会丢失。
查看 cookie 路径发现,保持会话的 cookie 域不一样,一个是 www.linuxidc.com,一个是 linuxidc.com。通过查资料,说要想保持一致,必须将 cookie 域设置为
.linuxidc.com, 注意域名前面必须有一个点,不要加 www 和 http。
但是通过 apache 的配置项 ProxyPassReverseCookieDomain 来设置对本案例无效,因为主站的 cookie 是 tomcat 来设置的,使用 apache 的配置无效。所以必须
修改 tomcat 配置,修改 conf/context.xml
<Context sessionCookiePath=”/” sessionCookieDomain=”.linuxidc.com”>
这样,通过 http://www.linuxidc.com 和 http://linuxidc.com 来访问就能保持会话一致了
此文是个人通过查资料以及实践的心得,有些地方说的不对(或有更好的方案)敬请指出。
Ubuntu 下 Apache 的 Rewrite 如何启用 http://www.linuxidc.com/Linux/2010-10/29027.htm
Ubuntu 14.04 中 Apache 2.2 升级到 2.4 后的几个要点 http://www.linuxidc.com/Linux/2015-01/111914.htm
Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm
CentOS 5.9 下编译安装 LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12) http://www.linuxidc.com/Linux/2013-03/80333p3.htm
RedHat 5.4 下 Web 服务器架构之源码构建 LAMP 环境及应用 PHPWind http://www.linuxidc.com/Linux/2012-10/72484p2.htm
LAMP 源码环境搭建 WEB 服务器 Linux+Apache+MySQL+PHP http://www.linuxidc.com/Linux/2013-05/84882.htm