nginx缓存页面+cookie后 串会话问题
2017-07-15 10:52
155 查看
前几天同事解决了一个非常诡异的bug,用户的对话中,出现了非自己的说的内容。他给我们分享的这个bug得产生的原因,以及解决过程,我觉得很有意义,所以总结写篇博客。
用户A请求 /index/index页面
A1:发起/index/index请求。
A2,A3:Nginx发现index/inde缓存的页面失效
A4:从后端的web server中获取index/index信息
A5:缓存A用户的响应头(包括cookie信息)+内容信息
A6:发送给用户数据,这时候会把响应头的cookie信息写入到浏览器。
缓存B用户的响应头(包括cookie信息)+内容信息
B1:发起/index/index请求。
B2:nginx发现index/index缓存的信息没有失效,直接把缓存的响应头+页面内容返回给了B
B3:B响应头里面是A的cookie信息,这时候,会把A的cookie种在A的浏览器里面,这时候A与B就串会话了。
proxy_hide_header Set-Cookie;
1 产生bug的原因?
用户A请求 /index/index页面
A1:发起/index/index请求。
A2,A3:Nginx发现index/inde缓存的页面失效
A4:从后端的web server中获取index/index信息
A5:缓存A用户的响应头(包括cookie信息)+内容信息
A6:发送给用户数据,这时候会把响应头的cookie信息写入到浏览器。
缓存B用户的响应头(包括cookie信息)+内容信息
B1:发起/index/index请求。
B2:nginx发现index/index缓存的信息没有失效,直接把缓存的响应头+页面内容返回给了B
B3:B响应头里面是A的cookie信息,这时候,会把A的cookie种在A的浏览器里面,这时候A与B就串会话了。
2 怎么发现bug的?
通过curl -v 调试页面,发现响应头会进行写入cookie操作3 怎么解决?
nginx会把响应页面的头信息也一起缓存,包括Set-cookie,导致后面访问页面的用户的cookie被设置成缓存的头。 解决方案,nginx提供proxy_hide_header的指令,可以去掉相关的响应头信息:proxy_hide_header Set-Cookie;
相关文章推荐
- nginx缓存页面后,串会话问题的解决方案(转)
- nginx缓存页面后 串会话问题的解决方法
- Nginx缓存页面后 串会话问题的解决方法
- 谈谈Cookie存取和IE页面缓存的问题
- 谈谈Cookie存取和IE页面缓存的问题
- 淡淡Cookie存取和IE页面缓存的问题
- Cookie存取和IE页面缓存的问题
- 用cookie解决页面没有更新缓存只刷新一次页面的问题+跨域问题
- 谈谈Cookie存取和IE页面缓存的问题
- 谈谈Cookie存取和IE页面缓存的问题
- 开发中遇到Js缓存问题。和页面会话级别的缓存。
- Nginx缓存页面更新问题
- 谈谈Cookie存取和IE页面缓存的问题
- 谈谈 Cookie 存取和IE页面缓存的问题
- [转]谈谈Cookie存取和IE页面缓存的问题
- 解决magento中guest页面cookie保存时间过短问题
- memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- 页面防止js,css等缓存问题解决办法
- Nginx之页面缓存