nginx普通匹配末尾的斜杠

nginx普通匹配末尾到底要不要加斜杠

先来看一段nginx配置

# 80端口下的一个普通匹配
location /test {
  proxy_pass http://127.0.0.1:3000;
}

我们假设3000端口有一个接口getSomething,就是说当我们请求http://127.0.0.1:3000/getSomething理论上能正常返回数据

但就针对上面的配置而言我们请求http://127.0.0.1/test/getSomething不出意外的话会是404

使用上面的配置 http://127.0.0.1/test/getSomething经过转发实际请求的接口其实是http://127.0.0.1:3000/test/getSomething:

原因就是没有使用斜杠的情况下匹配到的path:/test/getSomething会整个被拼在proxy_pass的后面。也就是说如果想要80下的test完全对应3000端口的话需要使用下面的配置

# 80端口下的一个普通匹配
location /test/ {
  proxy_pass http://127.0.0.1:3000/; #这里尾部的/可有可无
}

还有一种情况,假设3000端口上还有一批服务,请求方式为http://127.0.0.1:3000/otherApis/***

现在我们在80上具体代理到这一批服务

location /otherApis {
  proxy_pass http://127.0.0.1:3000/otherApis; 
}

因为location的结尾和proxy_pass一致 这个时候/就可有可无了。实际测试不管是否尾部加/都能正常请求到服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值