location /product {
proxy_pass http://10.0.0.25:8080;
}
Run Code Online (Sandbox Code Playgroud)
如果我对产品文件夹使用我的第一个位置描述,我应该使用http://mysdomain.com/product/
并且我不能http://mysdomain.com/product
从浏览器使用 。我的意思是我应该使用 url 的斜线结尾。我想用两个状态访问产品文件夹。
这有什么区别吗:
location /product/ {
proxy_pass http://10.0.0.25:8080;
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*Ten 14
这些位置是不同的。/production
例如,第一个将匹配,这可能不是您的预期。所以我更喜欢使用带有斜杠的位置。
另外,请注意:
如果某个位置由以斜杠字符结尾的前缀字符串定义,并且请求由 proxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass 或 memcached_pass 之一处理,则响应具有等于该字符串的 URI 的请求,但没有尾部斜杠,带有代码 301 的永久重定向将返回到附加斜杠的请求 URI。
如果你有类似的东西:
location /product/ {
proxy_pass http://backend;
}
Run Code Online (Sandbox Code Playgroud)
然后转到http://example.com/product
,nginx 会自动将您重定向到http://example.com/product/
.
即使您不使用上述这些指令之一,您也可以始终手动进行重定向:
location = /product {
rewrite ^ /product/ permanent;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想重定向,您可以使用:
location = /product {
proxy_pass http://backend;
}
Run Code Online (Sandbox Code Playgroud)
不,它们不一样——您需要使用带有正则表达式的尾部斜杠来匹配两者,即
location ~ /product/?
Run Code Online (Sandbox Code Playgroud)
有关如何匹配整个 URL 的更详细响应,请参阅此相关答案。
归档时间: |
|
查看次数: |
32831 次 |
最近记录: |