• nginx 反向代理(proxy_pass)cookie,session丢失问题


    nginx 反向代理(proxy_pass)cookie,session丢失问题

    1、丢失原因

    请求的接口地址经过反向代理后,所携带的 cookie 并没有一同携带到反向代理的地址。因此就导致了 session 失效。


    2、语法

    语法: proxy_cookie_path path replacementpath就是你要替换的路径 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、为传送成功

  • 相关阅读:
    阅读笔记《梦断代码》其一
    第一次冲刺(第九天)
    第一次冲刺(第八天)
    第一冲刺阶段(第七天)
    第一冲刺阶段(第六天)
    第一冲刺阶段(第五天)
    MySQL数据库半同步复制
    MySQL事物
    MySQL字符编码
    MySQL用户授权
  • 原文地址:https://www.cnblogs.com/buzheng/p/14302585.html
Copyright © 2020-2023  润新知