Nginx配置文件中location与proxy后斜杠对反向代理后请求地址的影响
今天公司在进行方向代理时需要将两个不同系统的请求互相转发,于是使用Nginx反向代理来实现,通过nginx接收全部请求,然后按指定规则分别转发到两个不同系统的后端服务器。在配置中有一些关于斜杠'/'用法的细节在此记录。
测试
Nginx代理访问地址:http://localhost:8090/api/test;
配置一1:location、proxy_pass都不加斜杠
location /api {
proxy_pass http://localhost:8081;
}
反向代理后地址:http://localhost:8081/api/test;
配置二:location加斜杠、proxy_pass不加斜杠
location /api/ {
proxy_pass http://localhost:8081;
}
反向代理后地址:http://localhost:8081/api/test;
配置三:location不加斜杠、proxy_pass加斜杠
location /api {
proxy_pass http://localhost:8081/;
}
反向代理后地址:http://localhost:8081//test;
配置四:location、proxy_pass都加斜杠
location /api/ {
proxy_pass http://localhost:8081/;
}
反向代理后地址:http://localhost:8081/test;
结论
proxy_pass代理地址端口后无任何字符,转发后地址:代理地址+端口号后URL
proxy_pass代理地址端口后有目录(仅一个斜杠' /'也算目录 ),转发后地址:代理地址+端口号后URL然后去除location后的字段("api"或"api/")
实际上location后的字段末尾加不加斜杠("api"或"api/")只会影响拼接后去除的字段。实际使用中需要先确定proxy_pass字段结尾斜杠的具体情况来控制location后的字段要不要加斜杠。
本文为原创文章,完整转载请注明来自 BoJack'Blog。欢迎转载,让声音传播的更远。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果