Nginx

在代理之前刪除可選的尾部斜杠

  • June 20, 2017

我想將一些請求代理到另一台伺服器,並且永遠不要發送尾部斜杠。我想出了以下可行的方法,但這真的是最好的方法嗎?感覺有點像我走了很長的路,雖然也許我已經盯著它太久了……

location ~ ^/proxy(?<proxy_to_path>.+[^/])/?$ {
   proxy_pass              http://127.0.0.1:8080$proxy_to_path;
}

我個人不喜歡location指令中復雜的正則表達式,因為nginx需要測試每個請求的 URI。您可以通過使用一個或多個rewrite...break語句來使用可以說更簡單的方案。

例如:

location ^~ /proxy/ {
   rewrite ^/proxy(.+?)/?$ $1 break;
   proxy_pass http://127.0.0.1:8080;
}

^~修飾符避免來自任何正則表達式位置塊的任何干擾。有關更多資訊,請參閱此文件

擷取是非貪婪的,因此/將刪除可選的尾隨。

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