nginx location proxy_pass 后面的url 加于不加 / 的区别

871 阅读1分钟

Nginx是一个高性能的HTTP和反向代理服务器,占用内存少且并发能力强,无论是个人还是企业开发,网关首选都是Nginx。

  • 在日常开发中最常使用的nginx的功能之一就是 location 即 转发功能。比如前端为了方便调用后端接口,在请求后端地址时加上 /api/,之后跟后端相应的接口地址,后期部署直接在nginx的location重定向即可。

以上场景几乎贯穿于我的日常开发工作;nginx的转发功能固然好用,但还是有很多注意事项。以下就列举一些比较常见的用法。

前置条件:假设我们请求的网址为:192.168.1.1:80/api/a.html

  1. location后没有/    转发网站没有/

location /api {

    Proxy_pass 192.168.1.1:81

}

经过nginx转向之后最终的网址是: 192.168.1.1:81/api/a.html

  1. location后没有/    转发网站有/

location /api {

    Proxy_pass 192.168.1.1:81/

}

经过nginx转向之后最终的网址是: 192.168.1.1:81/a.html

  1. location后有/    转发网站没有/

location /api/ {

    Proxy_pass 192.168.1.1:81 }

经过nginx转向之后最终的网址是: 192.168.1.1:81/api/a.html

  1. location后有/    转发网站有/

location /api/ {

    Proxy_pass 192.168.1.1:81/

}

经过nginx转向之后最终的网址是: 192.168.1.1:81/a.html

小结:当nginx里面匹配时可以把端口后的参数分为 path1+path2(其中我在上方标记的location属于path1,proxy_pass属于path2),

Proxy_pass 里面是 ip:port+/时nginx最后匹配的网址是 Proxy_pass的内容加上path2;**

Proxy_pass 里面是 ip:port时nginx最后匹配的网址是 Proxy_pass的内容加上path1+path2;

Proxy_pass后的 / 会截掉location后跟的地址.