Heim >Backend-Entwicklung >PHP-Tutorial >使用apache配置tomcat应用整合php论坛-discuz

使用apache配置tomcat应用整合php论坛-discuz

WBOY
WBOYOriginal
2016-06-23 13:41:18932Durchsuche


最近搞一个web应用,主站基于tomcat的java应用,需要整合php论坛discuz

tomcat应用端口是8101, apahce端口是80,网站域名是www.example.com

使用xampp服务器,直接集成apache和php安装discuz。

现在想达到使用www.example.com访问的是tomcat主站,使用www.example.com/bbs访问的是discuz论坛

由于tomcat端口是8101,不能直接通过www.example.com来访问,所以需要使用apache的VirtualHost来实现

配置如下:

<virtualhost>    ProxyPass /bbs !                                                                           ProxyPass / http://example.com:8101/myweb/    ProxyPassReverse / http://example.com:8101/myweb/    ProxyPassReverseCookiePath / /</virtualhost>

解释

ProxyPass / http://example.com:8101/myweb/
表示访问网站根目录将进行代理访问,访问的地址是tomcat应用地址 ,需要注意的是路径末尾必须以 / 结束,否则无法正常访问

ProxyPassReverse / http://example.com:8101/myweb/
反向代理 保持和ProxyPass一致

ProxyPassReverseCookiePath / /

Cookie路径,必须配置,否则网站session将丢失,cookie无法保存,此处配置表示根节点cookie路径为/(也可以配置为其他如:)

ProxyPassReverseCookiePath / /myweb

ProxyPass /bbs !
表示 /bbs 目录 不进行代理访问,也就是说 bbs使用apache直接访问,如果不配置该项,访问/bbs将会使用tomcat来访问

设置完以可按照预期正常访问。但是有一个问题就是,通过http://www.example.com 和 http://example.com会话不能保持一致,也就是说我使用example.com登录后,再使用

www.example.com访问,登录会话会丢失。

查看cookie路径发现,保持会话的cookie域不一样,一个是www.example.com,一个是example.com。通过查资料,说要想保持一致,必须将cookie域设置为

.example.com,注意域名前面必须有一个点,不要加www和http。


但是通过apache的配置项ProxyPassReverseCookieDomain来设置对本案例无效,因为主站的cookie是tomcat来设置的,使用apache的配置无效。所以必须

修改tomcat配置,修改conf/context.xml

<context sessioncookiepath="/" sessioncookiedomain=".example.com"></context>

这样,通过http://www.example.com 和 http://example.com来访问就能保持会话一致了

此文是个人通过查资料以及实践的心得,有些地方说的不对(或有更好的方案)敬请指出。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn