nginx之proxy_pass的session丢失

背景:

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/ /;

猜你喜欢

转载自snv.iteye.com/blog/2180945
今日推荐