nginx 反向代理(proxy_pass)cookie,session丢失问题
nginx 反向代理(proxy_pass)cookie,session丢失问题
1、丢失原因
请求的接口地址经过反向代理后,所携带的 cookie 并没有一同携带到反向代理的地址。因此就导致了 session 失效。
2、语法
语法: proxy_cookie_path   path replacement; path就是你要替换的路径 replacement 就是要替换的值
3、可能出现场景
假设域名为(主域名情况):ibuzheng.com
- 只进行host、端口转换,cookie 不会改变
## 场景一:代理的地址与项目同名(假设项目名为:itest,端口号为8081)
location /itest { ##注意此处,跟项目同名
        proxy_pass   http://127.0.0.1:8080/itest;
 }
## 以上这种情况,因为反向地址依旧与项目同名,只是做了项目端口号转向,因此 cookie 不会丢失
- 路径改变,需要重新配置 cookie 执行路径
## 场景二:代理的地址与项目不同
 location /proxy_path { ##注意此处,跟项目不同名(proxy_path 代理地址)
        proxy_pass   http://localhost:8080/projectName;
        proxy_cookie_path  /projectName /proxy_path;
  }
上述,proxy_cookie_path 的意思为:将原本发送给项目 /projectName 的重新指向发送给 proxy_path
假设域名为(子域名情况):ibuzheng.com/policy
## 场景:代理的地址与项目不同
 location /businessSrver { ##注意此处,跟项目不同名(proxy_path 代理地址)
        proxy_pass   http://localhost:8080/projectName;
        proxy_cookie_path  /projectName /policy/businessSrver;
        ## proxy_cookie_path  /projectName /businessSrver;  ## 错误示范,这个无法获取到 cookie 下面图片地址
  }
上述,proxy_cookie_path 的意思为:将原本发送给项目 /projectName 的重新指向发送给 /policy/businessSrver ;
 
    
        ps:如果出现cookie还未携带发送的情况,可以打开F12,查看一下 
    
    
cookies
    
        发送失败具体发送到哪里,是否与代理接口地址一致。 
    

图:1、为传送失败,2、为传送成功
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号