apache配置故障总结

在服务器上配置apache+tomcat 运行环境,这种搭配,网上的文章非常全,但我这次的故障不是这个组合的设置问题,而是apache本身的设置问题。

一般的设置过程如下

1)apache加virtualhost,通过Proxy与tomcat连通

2)tomcat会标记jvmRoute,多个结点使用session时,还会打开Cluster。

3)在apache中增加<Proxy balancer://mycluster>,并对应好tomcat中的jvmRoute。

以上设置好,系统就会正常工作,但如果只是apache,只设置第一步,并用http转接一样可以正常工作。

但我遇到的是另一个问题,因为apache下运行多个virtualHost,因另一个程序测试所以打开了expires_module 模块,这是用于缓存控制的,一般还会配置<IfModule mod_expires.c>以识别多种文件类型。

这个缓存功能打开后,就让virtualhost的运行呈现另一种状态

1)在客户端的表现,用户A登录再退出后,重新打开时会发现仍处于登录状态,如果之后有另一用户B登录时,在之前用户A使用过的功能里看到的仍是A的信息。感觉就是session完全乱了,但这时强制刷新一下,用户信息就以最后一个登录的用户为准。

2)服务器virtualHost中有ProxyPassReverseCookieDomain和ProxyPassReverseCookiePath属性,这两个属性怎样设置都不会影响到 1 中客户端的表现。apache因为缓存设置,基本可以不像virtualHost继续请求。

由以上的表现可以看出,virtualHost本身是做代理的,用于访问多个站点,但一旦启用缓存模块,virtualHost就变成了缓存服务器,除非用户强制请求新版本的内容,否则apache始终使用缓存,而这个缓存的判断过程还会因浏览器的不同有一定差异(IE在“始终取最新版本”设置时,有时会正常加载,firefox即使重启浏览器也取不到新版本,只能清除缓存,其它浏览器未测试),这时不只是session,包括表单字段都是有缓存效果的。

至于缓存模块的详细设置我还未仔细研究,也欢迎大家拍砖,但对于不熟悉或新手,本人强烈建议不要使用缓存模块,这种缓存已经包含对动态请求内容的缓存。

故障追踪和恢复过程:

从客户反馈(用户登录信息混乱)--检查程序本身逻辑--virtualHost的相关设置--apache,tomcat(session,cookie设置)--最终定位到expires_module .

唯一值得安慰的是,单独运行tomcat程序时,程序表现完全正常,不论用户怎么操作都没有问题,所以很快定位到apache,但从virtualHost到expires_module ,则是用一个干净的apache重新配置才发现的。

最后,希望配置apache+tomcat的朋友们能从这个故障中得到帮助,也欢迎高手多提供有关apache中缓存模块的相关知识。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章