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


复制代码
    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;
    }
相关推荐
重生之小比特14 小时前
【Linux系统】17 库制作与原理(上)
linux·运维·服务器
2401_8685347814 小时前
论新技术在网络规划中的应用
网络
QH1392923188014 小时前
R&S ZNA43 ZNB3044 10MHz~43.5GHz网络分析仪
网络·5g
Shadow(⊙o⊙)14 小时前
仿muduo实现高并发服务器——EchoServer完成
运维·服务器
Brilliantwxx14 小时前
【STM32】 内部 Flash 的 HAL 库函数详解与自定义封装实战
linux·服务器·网络
西索斯coding15 小时前
qwen3.8-max-0902 和 minimax-m3 改真实仓库差多少?2026 年 50 个缺陷复现实测框架
java·服务器·网络·ai
外收内放15 小时前
ENSP学习记录(2)
网络·智能路由器
m0_7381207215 小时前
JWT 安全从入门到实战:六种典型攻击场景解析
前端·网络·python·安全·网络安全
zdd5678915 小时前
tcpdump测试
网络
码途行者15 小时前
Linux 服务器 Golang 安装及环境变量配置
linux·运维·服务器