我有两个位置的nginx服务器:
location /service1 {
rewrite ^/service1/?(.*)$ /$1 break;
proxy_pass http://localhost:xxxx;
}
location ~* /service2(?<stuff>.*)$ {
rewrite ^ /service2$stuff break;
proxy_pass http://192.168.0.X;
}
假设我有一个请求http://hostname/service1/service2
。我注意到service2总是处理请求。但是我希望服务1来处理它。如何设置?
答案 0 :(得分:1)
重要的是要了解Nginx如何选择哪个位置块来处理请求。请阅读https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms,非常有用的文章。
文章的相关摘录
重要的是要了解,默认情况下,Nginx将优先于前缀匹配来提供正则表达式匹配。但是,它首先评估前缀位置,从而允许管理员通过使用=和^〜修饰符指定位置来覆盖此趋势。
根据您的情况,您可以使用“位置^〜/ service1”
Nginx位置匹配器-https://nginx.viraptor.info/