Nginx
Nginx 反向代理尾部斜杠
這個問題已經回答了多次,但在我的情況下有一個轉折點。
我有一個在埠 3000 上執行的節點應用程序。我正在使用 nginx 進行反向代理。現在,該應用程序僅在末尾有斜線時才有效。
所以這有效:
https://example.com/main/site/react/
這不會:
https://example.com/main/site/react
這是我正在使用的配置:
location /main/site/react { error_log /var/log/nginx/app.error.log; rewrite ^/main/site/react/(?:|[\w\/]+)(\/static.*)$ $1 break; rewrite ^/main/site/react/?(.*)$ /$1 break; proxy_pass http://127.0.0.1:3000/; }
檢查其他相關問題後,添加以下重寫規則(之後
error_log
)對我有用:rewrite ^(.*[^/])$ $1/ permanent;
上面的規則呈現了我的節點應用程序,但是我的靜態資源失敗了。我有一些靜態資源重寫不起作用。
所以這個 URL 不起作用:
https://example.com/main/site/react/static/js/bundle.js
. 它總是呈現索引 HTML 頁面。
你的配置看起來不錯。只需在最後添加重寫:
location /main/site/react { rewrite ^/main/site/react$ https://$host/main/site/react/ permanent; rewrite ^/main/site/react/(?:|[\w\/]+)(\/static.*)$ $1 break; rewrite ^/main/site/react/?(.*)$ /$1 break; proxy_pass http://127.0.0.1:3000; }
還修改了正則表達式,它將在查詢參數之前處理斜杠。