工做场景:苦逼码农一个,公司技术上但愿跟上潮流,但人员不但愿跟上,因此先后一块儿开发,对于只开发前端代码的人来讲能够 mock 数据,可是本人既然连后台代码一块儿开发,但愿经过 nginx代理直接访问接口返回数据,so...前端
先上nginx配置nginx
server { listen 8085; server_name localhost; location / { proxy_pass http://localhost:4200; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location ~ /server/.+ { rewrite /server/(.+) /$1 break; proxy_pass http://localhost:8082; proxy_cookie_path ~*^/.+/([^/]*) /$1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } }
自动略过server 的前两行web
~ /server/.+
表明这个location 会处理全部符合这个正则的请求,不会与 第一个location的/
冲突,由于 ~ 比 默认的匹配模式高proxy_cookie_path
针对的是 服务器响应头中的Set-cookie
的Path属性,由于后台服务器返回给前台的cookie是带有自身的contextpath的,好比:springboot中配置了server.servlet.content-path=mall或者tomcat中的工程名字是 mall ,那么响应给前台的Set-cookie的path就是 /mall,可是浏览器在登录之后的请求时带的cookies就没有 path属性,这会致使登录状态失效;因此 proxy_cookie_path
是将 服务器返回 的cookies 的path进行转换的,上面的配置是将服务器返回的cookies路径的前缀去掉第一段《完》spring