前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx location 以/结尾的问题

nginx location 以/结尾的问题

作者头像
摸鱼的G
发布2024-04-18 09:27:03
6420
发布2024-04-18 09:27:03
举报
文章被收录于专栏:火属性小虫
nginx location 以/结尾的问题

近期,配置nginx时候发现,location以/ 做结尾会导致规则发生变化。

在location中匹配的url最后有无/结尾,指的是模糊匹配与精确匹配的问题

在proxy_pass中代理的url最后有无/结尾(实际判断是有无uri),指的是在proxy_pass 指定的url后要不要替换掉location里面匹配到的字符串

只要在 域名:端口 后面加上了任何以/开头的字符串, 就被视为有uri, 规则就会发生改变. 有uri就会把请求的uri拼到proxy_pass的url后面, 然后整个替换掉location里面匹配的字符串。

代码语言:javascript
复制
proxy_pass http://test.com:8000/;
proxy_pass http://test.com:8000;
代码语言:javascript
复制
#情况1
location /proxy/ {
    proxy_pass http://test.com:8000/;
}
# proxy_pass的最终地址就是: http://test.com:8000/login.html  
# 因为proxy_pass 在端口号后面有以/开头的uri,代表绝对路径,所以会忽略匹配到的/proxy/, 直接将/proxy/ 整个从url里面删除.

#情况2
location /proxy/ {
    proxy_pass http://test.com:8000;
}
#proxy_pass 代理到 http://test.com:8000/proxy/login.html

#情况3
location /proxy/ {
    proxy_pass http://test.com:8000/disquz/;
}
#proxy_pass 代理到http://test.com:8000/disquz/login.html

#情况4
location /proxy/ {
    proxy_pass http://test.com:8000/disquz;
}
# proxy_pass 代理到http://test.com:8000/zheshilogin.html  
# 因为在端口号后面有/disquz 以/开头的uri, 所以会将/proxy/完全替换, 故/proxy/login.html 只剩下login.html 拼在url后面就会成为http://test.com:8000/disquzlogin.html

#情况5
location /proxy {
    proxy_pass http://test.com:8000/zheshi/;
}
# proxy_pass 代理到http://test.com:8000/zheshi//login.html  
# 因为匹配到了这个规则 所以把uri里面的/proxy去掉 剩下/login.html, 拼在url后面就是http://myblog.com:8000/disquz//login.html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nginx location 以/结尾的问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档