Nginx是一个高性能的HTTP和反向代理服务器,占用内存少且并发能力强,无论是个人还是企业开发,网关首选都是Nginx。
- 在日常开发中最常使用的nginx的功能之一就是 location 即 转发功能。比如前端为了方便调用后端接口,在请求后端地址时加上 /api/,之后跟后端相应的接口地址,后期部署直接在nginx的location重定向即可。
以上场景几乎贯穿于我的日常开发工作;nginx的转发功能固然好用,但还是有很多注意事项。以下就列举一些比较常见的用法。
前置条件:假设我们请求的网址为:192.168.1.1:80/api/a.html
- location后没有/ 转发网站没有/
location /api {
Proxy_pass 192.168.1.1:81
}
经过nginx转向之后最终的网址是: 192.168.1.1:81/api/a.html
- location后没有/ 转发网站有/
location /api {
Proxy_pass 192.168.1.1:81/
}
经过nginx转向之后最终的网址是: 192.168.1.1:81/a.html
- location后有/ 转发网站没有/
location /api/ {
Proxy_pass 192.168.1.1:81 }
经过nginx转向之后最终的网址是: 192.168.1.1:81/api/a.html
- 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后跟的地址.