Nginx location和proxy_pass配置详解
概述
Nginx 配置中 location
和 proxy_pass
指令的不同组合方式及其对请求转发路径的影响。
配置效果
1. location 和 proxy_pass 都带斜杠 /
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080/upload
转发地址不带 location 匹配目录 /api/
2. location 不带斜杠,proxy_pass 带斜杠 /
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080//upload
转发地址会多带 /
3. location 带斜杠,proxy_pass 不带斜杠
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080/api/upload
转发地址会带 location 匹配目录 /api/
4. location 和 proxy_pass 都不带斜杠
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080/api/upload
转发地址会带 location 匹配目录 /api/
5. location 和 proxy_pass 都带斜杠 /,但 proxy_pass 带地址
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080/server/upload
转发地址不带 location 匹配目录 /api/
6. location 不带斜杠,proxy_pass 带斜杠 /,但 proxy_pass 带地址
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080/server//upload
转发地址不带 location 匹配目录 /api/ ,会多带 /
7. location 带斜杠,proxy_pass 不带斜杠,但 proxy_pass 带地址
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080/serverupload
转发地址不带 location 匹配目录 /api/ 直接进行了替换
8. location 和 proxy_pass 都不带斜杠,但 proxy_pass 带地址
访问地址:
www.hw.com/api/upload
转发地址:
http://127.0.0.1:8080/server/upload
转发地址不带 location 匹配目录 /api
总结
当
proxy_pass
代理地址端口后有目录(包括/
),转发后地址为:代理地址 + 访问 URL 目录部分去除location
匹配目录。当
proxy_pass
代理地址端口后无任何内容,转发后地址为:代理地址 + 访问 URL 目录部分(包括location
地址)。