Nginx
在代理之前刪除可選的尾部斜杠
我想將一些請求代理到另一台伺服器,並且永遠不要發送尾部斜杠。我想出了以下可行的方法,但這真的是最好的方法嗎?感覺有點像我走了很長的路,雖然也許我已經盯著它太久了……
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; }
該
^~
修飾符避免來自任何正則表達式位置塊的任何干擾。有關更多資訊,請參閱此文件。擷取是非貪婪的,因此
/
將刪除可選的尾隨。