阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx反向代理proxy_pass目标地址带/与不带/的区别

39次阅读
没有评论

共计 740 个字符,预计需要花费 2 分钟才能阅读完成。




本站提供 Linux 服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

proxy_pass是 Nginx 反向代理常用的一个指令,该指令存在一个小小的细节(坑),用过此命令的可能遇到过,某些时候看似逻辑正确,但访问出现 4xx5xx一类的错误。proxy_pass目标地址中末尾带 / 和不带 / 意义有所不同,下面一起来看一下。

例子

假如我访问的地址是http://domain.com/test/api,存在下面的一段反向代理配置:

location ^~ /test/ {
      #目标路径带有 /
      proxy_pass https://192.168.2.6/;
}

可以看到反向代理的目标地址是 https://192.168.2.6/,末尾带有/ 当访问 http://domain.com/test/api 是最终会到达源站的https://192.168.2.6/api

假如目标地址是 https://192.168.2.6 末尾不带/,配置如下:

location ^~ /test/ {
      #目标路径不带 /
      proxy_pass https://192.168.2.6;
}

当访问 http://domain.com/test/api 时,最终请求会到达源站的https://192.168.2.6/test/api, 所以两者最终去请求源站的时候路径是不同的,需要根据自身业务来判断 proxy_pass 目标路径是否需要带/,如果不清楚这个规则,要踩坑许久。

总结

  • proxy_pass 目标路径带有 /:此时location 中的路径不会追加到目标路径末尾
  • proxy_pass 目标路径不带 /:此时location 中的路径会追加到目标路径末尾再传递给源站

此文部分内容参考了:Nginx 增加二级目录的反向代理时,最常见的两个问题

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计740字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中