您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery | 小程序 |

Nginx

51自学网 2025-02-05 12:16:41
  网站维护

概述

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;    }}

    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;    }

    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;    }

    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;    }

    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;    }


下载地址:
Nginx
Nginx设置HttpOnly Secure SameSite参数解决Cookie信息丢失
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。