关于nginx的proxy_pass 有无/(根)结尾的区别

对外访问路径是:http://keery.com/proxy/login.html

#情况1
location /proxy/ {
    proxy_pass http://myblog.com:8000/;
}
# proxy_pass的最终地址就是: http://myblog.com:8000/login.html  
# 因为proxy_pass 在端口号后面有以 / 开头的uri,代表绝对路径,所以会忽略匹配到的/proxy/, 直接将/proxy/ 整个从url里面删除.
(URL中:/ 替换 /proxy/ )
转发前:http://keery.com/proxy/login.html

转发后:http://myblog.com:8000/login.html

#情况2
location /proxy/ {
    proxy_pass http://myblog.com:8000;
}
#proxy_pass 代理到 http://myblog.com:8000/proxy/login.html
# 由于后面没有 / 所以 没有替换

转发后路径:http://myblog.com:8000/login.html


#情况3
location /proxy/ {
    proxy_pass http://myblog.com:8000/ymb/;
}
#proxy_pass 代理到http://myblog.com:8000/ymb/login.html
# 因为proxy_pass 在端口号后面有以 /ymb/ 开头的uri,所以 /ymb/ 替换 /proxy/
# /ymb/ = /proxy/ URL 路径上面替换

#情况4
location /proxy/ {
    proxy_pass http://myblog.com:8000/ymb;
}
# proxy_pass 代理到http://myblog.com:8000/ymblogin.html  
# 因为在端口号后面有/ymb 以/开头的uri, 所以会将/proxy/完全替换, 而替换的 /ymb 后面是没有 / 所以是:ymblogin.html 结尾
转发前:http://keery.com/proxy/login.html

转发后:http://myblog.com:8000/ymblogin.html


#情况5
location /proxy {
    proxy_pass http://myblog.com:8000/ymb/;
}
# proxy_pass 代理到http://myblog.com:8000/ymb//login.html  
# 因为在端口号后面有/ymb/ 以/开头的uri,所以会将 /proxy 完全替换 (URL位置上替换 『/proxy』/login.html = 『/ymb/』/login.html) ,可以想象替换后的 URL 是 http://keery.com/ymb//login.html(符号那部分替换)

转发前:http://keery.com/proxy/login.html

转发后:http://myblog.com:8000/ymb//login.html

#情况6
location /proxy {
    proxy_pass http://myblog.com:8000/ymb;
}
#经过我对于情况5 和 情况6的测试 好像两种都是可以正常访问的 对于 login 页面,因为你在后面多拼接 / 对 nginx 来说是无意义的。
例如:
正常:http://keery.com/proxy/login.html

更改:http://keery.com/proxy///login.html (照样正常可以访问的 所以 多 / 无影响)
看下面测试的京东案例

总结:location 后面 匹配的内容,如果是 proxy_pass 路径后面有 / 跟路径的的uri,都是替换掉的。结合对外访问路径看就很容易明白了。只看后面uri部分,前面的域名可以不看。

所有的理解按照下面这个图 替换形式 就没有错了。

测试多个 " / " 对于网站访问的影响

 

http://8.134.70.214:8981/proxy//a.html 记得 在nginx 后面加 多个 / 是毫无帮助的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值