......
    upstream 10.15.97.136 {
        server 10.15.97.133:443 weight=5 max_fails=3 fail_timeout=30s;
        server 10.15.97.132:443 weight=5 max_fails=3 fail_timeout=30s;
    }
......
   server {
              listen 443 ssl;
                            .....
             location / {
                                    proxy_set_header X-Real-IP  $remote_addr;
                                                    proxy_set_header Host $host;
                                                    proxy_set_header X-Forwarded-Proto  https;
                                                     proxy_redirect http:// $scheme://;
                                                     proxy_pass https://10.15.97.136/justin/;
                                                      proxy_cookie_path /justin/ /;    #这里的路径要注意对应关系
                                                        proxy_set_header Cookie $http_cookie;
                        }

上面配置就能轻松实现代理,由于原始路径和代理路径发生了变化,导致 session 丢失,服务端获取的 session无效。如果路径代理路径和原始路径发生改变,就必须告诉服务器,加上路径转换proxy_cookie_path /edr /;可以将/edr的cookie输出到/上,Tomcat的session正常了。

如果需要更复杂的路径转换可用通配符的方式进行转换,详情要查看http://nginx.org/en/docs/http/ngx_http_proxy_module.html?&_ga=1.161910972.1696054694.1422417685#proxy_cookie_path了。