我想将一些请求代理到另一台服务器,并且永远不发送尾部斜杠。我想出了下面的方法,这种方法可行,但这真的是最好的方法吗?感觉有点像我在绕远路,不过也许我已经盯着它看了太久了……
location ~ ^/proxy(?<proxy_to_path>.+[^/])/?$ {
proxy_pass http://127.0.0.1:8080$proxy_to_path;
}
答案1
我个人不喜欢在location
指令中使用复杂的正则表达式,因为nginx
需要测试每个请求的 URI。您可以使用一个或多个rewrite...break
语句来使用可能更简单的方案。
例如:
location ^~ /proxy/ {
rewrite ^/proxy(.+?)/?$ $1 break;
proxy_pass http://127.0.0.1:8080;
}
修饰符^~
可避免任何正则表达式位置块的干扰。请参阅这个文件了解更多信息。
捕获是非贪婪的,因此可选的尾随/
将被删除。