背景:
nginx下基于多域名同ip同端口的配置中tomcat中session丢失
描述:
http://www.linkrmb.com 对应的部署应用中为http://ip:9008/linkrmb具体的nginx配置如下:
server { listen 80; server_name www.linkrmb.com; location / { add_header From www.linkrmb.com; proxy_pass http://localhost:9008/linkrmb/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Cookie $http_cookie; client_max_body_size 1000m; } }
此时由于cookie存储的位置不是基于/那么在第二次访问的时候会从新创建session,因此session中的信息丢失
解决方式:
修改cookie的路径
server { listen 80; server_name www.linkrmb.com; location / { add_header From www.linkrmb.com; proxy_pass http://localhost:9008/linkrmb/; proxy_cookie_path /linkrmb/ /; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Cookie $http_cookie; client_max_body_size 1000m; } }
重点为:proxy_cookie_path /linkrmb/ /;