假如访问的地址是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反向代理proxy_pass目标地址带/与不带/的区别 – 小z博客 (xiaoz.me)

          本文系作者 @阿祖 发布在阿祖资料库。未经许可,禁止转载。