Nginx

Nginx 反向代理尾部斜杠

  • July 10, 2017

這個問題已經回答了多次,但在我的情況下有一個轉折點。

我有一個在埠 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;
}

還修改了正則表達式,它將在查詢參數之前處理斜杠。

引用自:https://serverfault.com/questions/851456