工做場景:苦逼碼農一個,公司技術上但願跟上潮流,但人員不但願跟上,因此先後一塊兒開發,對於只開發前端代碼的人來講能夠 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