Apache代理请求session无法保持,apachesession


问题: 通过Apache代理请求从外网进入开发内网,因外网访问路径与内网不统一,使得Apache重写JSESSIONID,使得每次请求新建会话,客户端与服务端会话无法保持

解决方法:

1.出处: blog.sina.com.cn/s/blog_02e45c9b01011khc.html:

 

被apache mod_proxy反向代理tomcat session丢失问题折腾了两个晚上。

关键在于tomcat 中的应用context 路径是 /portal , 而外部访问 context 路径是 / , JSESSIONID 的值从浏览器经过反向代理到达tomcat时, 由于cookie时内外路径不一致, 使tomcat每次重写设置 JSESSIONID 的值,导致session丢失现象,在apache VirtualHost中需要通过 ProxyPassReverseCookiePath 指令做一个路径映射,详细如下: 
 

  ProxyPreserveHost On 
   ProxyPass / ://localhost:8080/portal/ 
   ProxyPassReverse / ://localhost:8080/portal/ 
   ProxyPassReverseCookieDomain locahost www.domain.cn 

   ProxyPassReverseCookiePath /portal /

 

2.出处: www.myexception.cn/apache/476201.html

 

解决apache反向代理后“session”保持不住的问题
其实很简单,但是又浪费了多少青春,大把大把的时间。

有关apache的mod_proxy模块,设置反向代理时,如果指向的是
/ -> /foo, 这个时候JSESSIONID的path会被默认设置成/foo,导致请求时不会被接受此id,造成sesssion不断被刷新,所谓的保持不住session的现象。

解决办法非常简单:
ProxyPassReverseCookiePath /foo /

唉,绕弯绕来绕去,还是要苦读manual。

相关内容

    暂无相关文章