Nginx location proxy_pass斜杠规则

文章讨论了Nginx中location和proxy_pass的使用规则,特别是在处理IP+端口+路径时如何正确拼接。当proxy_pass后跟路径时,可能导致额外的斜杠或路径重叠,从而影响请求的正确转发。例如,配置中的斜杠可能导致接口返回401错误。作者寻求理解这种情况下为何两种写法产生不同结果的原因。
摘要由CSDN通过智能技术生成

简单总结:

如果只有ip+端口:符合location的,直接拼接。proxy_pass+路径。

如果是ip+端口+路径:就把原来请求中location的部分去掉,然后拼在proxy_pass路径后面。

例子:

如果请求是http://12.34.56.78:1234/api/user/login

配置端口后面不写东西

location /api {
    proxy_pass    http://11.22.33.44:5556;   
}

就直接拼接:

 结果就是 http://11.22.33.44:5556/api/user/login

如果端口后面有路径,斜杠也算,比如这么写

location /api {
    proxy_pass    http://11.22.33.44:5556/;   
}

那么就是

结果就是http://11.22.33.44:5556//user/login,注意多了一杠。

所以要想正确,就要写成/api/。

如果端口后面有路径,请求是http://12.34.56.78:1234/api/user/login:

location /api {
    proxy_pass    http://11.22.33.44:5556/test;   
}

那么:

 结果就是 http://11.22.33.44:5556/test/user/login

如果test后面还有/,那就变成test//user/login了。

这部分前端写起来比较熟悉,和各个框架的proxy_table规则基本一致

把proxy_pass和location理解为target和pathRewrite就好了。

但是,最近发现location和proxy_pass都加上/,接口报错401,都去掉就正确了,发现这两种写法的结果是一致的,但就是存在问题。

推测是proxy_pass有无斜杠,地址是不同的,导致找不到服务所在位置?有大佬知道嘛。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值