Nginx location匹配後 跳轉問題
阿新 • • 發佈:2020-08-18
場景:
伺服器上81和82埠部署了兩個網站,想通過listen 80埠,實現 ip/引數,來轉發到不同的埠
一開始使用了location /引數
server { #省略其他配置 listen 80; location /one{ proxy_pass http://location:81 } location /tow{ proxy_pass http://location:82 } }
但是這樣寫的話,問題就來了
此時如果我們訪問:localhost/one ,並不會轉發到location:81這個地址,而是location:81/one ,此時就會404了,因為我81埠的網站沒有 one這個目錄或介面方法
因為proxy_pass 後面的地址尾部沒有加 / ,那麼就會把location後的 引數帶過去,但是加了 / 又會有問題,會變成絕對路徑,這樣的話,網站的 靜態檔案(js/css等等)路徑 可能會出現問題
最後終於找到了一個辦法,使用rewrite(可以實現對url的重寫,以及重定向)
上程式碼:
server { #省略其他配置 listen 80; location /one{ rewrite ^/(.*) http://伺服器ip/域名:81; } location /tow{ rewrite ^/(.*) http://伺服器ip/域名:82; } }
這樣的話,訪問:localhost/one ,就會重定向到http://伺服器ip/域名:81;
rewrite後面的部分是^/(.*),這是一個正則表示式,匹配完整的域名和後面的路徑地址(必加)
以上就是nginx location的踩坑