Nginx location 和 proxy_pass 配置详解
概述Nginx 配置中 location 和 proxy_pass 指令的差别组合方式及其对请求转发路径的影响。
配置效果
1. location 和 proxy_pass 都带斜杠 /
location /api/ {
proxy_pass http://127.0.0.1:8080/;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080/upload
转发地址不带 location 匹配目录 /api/
2. location 不带斜杠,proxy_pass 带斜杠 /
location /api {
proxy_pass http://127.0.0.1:8080/;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080//upload
转发地址会多带 /
3. location 带斜杠,proxy_pass 不带斜杠
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080/api/upload
转发地址会带 location 匹配目录 /api/
4. location 和 proxy_pass 都不带斜杠
location /api {
proxy_pass http://127.0.0.1:8080;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080/api/upload
转发地址会带 location 匹配目录 /api/
5. location 和 proxy_pass 都带斜杠 /,但 proxy_pass 带地址
location /api/ {
proxy_pass http://127.0.0.1:8080/server/;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080/server/upload
转发地址不带 location 匹配目录 /api/
6. location 不带斜杠,proxy_pass 带斜杠 /,但 proxy_pass 带地址
location /api {
proxy_pass http://127.0.0.1:8080/server/;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080/server//upload
转发地址不带 location 匹配目录 /api/ ,会多带 /
7. location 带斜杠,proxy_pass 不带斜杠,但 proxy_pass 带地址
location /api/ {
proxy_pass http://127.0.0.1:8080/server;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080/serverupload
转发地址不带 location 匹配目录 /api/ 直接进行了更换
8. location 和 proxy_pass 都不带斜杠,但 proxy_pass 带地址
location /api {
proxy_pass http://127.0.0.1:8080/server;
}
[*]访问地址:www.hw.com/api/upload
[*]转发地址:http://127.0.0.1:8080/server/upload
转发地址不带 location 匹配目录 /api
总结
[*]当 proxy_pass 署理地址端口后有目录(包括 /),转发后地址为:署理地址 + 访问 URL 目录部分去除 location 匹配目录。
[*]当 proxy_pass 署理地址端口后无任何内容,转发后地址为:署理地址 + 访问 URL 目录部分(包括 location 地址)。
场景示例
upstream backend_name_hw {
server 10.10.10.10:32323 max_fails=2 fail_timeout=2;
}
server {
listen 80;
server_name hw.test.com;
client_max_body_size 1024m;
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
location / {
proxy_pass http://backend_name_hw;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /hello {
proxy_pass http://backend_name_hw/hello;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
https://i-blog.csdnimg.cn/direct/b0b4a9596f4e4bd1862e153d93bc23c2.png
https://i-blog.csdnimg.cn/direct/5284b0722a9147988edfd6edccdec57a.png
location /hw/ {
proxy_pass http://hw-nginx/index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
https://i-blog.csdnimg.cn/direct/c7d20f496df741d3be88f384c6ac1b54.png
location /hwhw/{
proxy_pass http://hw-nginx/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
https://i-blog.csdnimg.cn/direct/5e61a6c3da8c4b749e17a078671092e1.png
location /hw/hi/ {
proxy_pass http://hw-nginx/hello/index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
https://i-blog.csdnimg.cn/direct/18c44e3743284d3aae1bfaf98a958a64.png
location /hello/index.html {
proxy_pass http://hw-nginx;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
https://i-blog.csdnimg.cn/direct/717a24cd8a3d4f29b311b764eb07dccf.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]