被apache mod_proxy反向代理tomcat session丢失问题折腾了两个晚上。 关键在于tomcat 中的应用context 路径是 /portal , 而外部访问context 路径是 / ,JSESSIONID 的值从浏览器经过反向代理到达tomcat时,由于cookie时内外路径不一致,使tomcat每次重写设置JSESSIONID 的值,导致session丢失现象,在apache VirtualHost中需要通过ProxyPassReverseCookiePath 指令做一个路径映射,详细如下:
ProxyPreserveHost On ProxyPass / http://localhost:8080/portal/
ProxyPassReverse / http://localhost:8080/portal/
ProxyPassReverseCookieDomain locahost www.domain.cn
ProxyPassReverseCookiePath /portal /