惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
博客园 - Franky
F
Fortinet All Blogs
D
Docker
博客园 - 司徒正美
腾讯CDC
Recent Announcements
Recent Announcements
The Cloudflare Blog
B
Blog RSS Feed
GbyAI
GbyAI
T
Tailwind CSS Blog
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志

博客园 - cnkker.com

Visual Studio 2026 激活码 / VS2026密钥(VS2026激活码) 沙箱环境安装dotnet Microsoft Office 2024 全家桶 docker-compose 部署 Redis 的一些警告 UFW防火墙规则对Docker映射端口无效 Nginx错误 open() "/usr/local/nginx/proxy_temp/x/xx/xxxxxxxx" failed (13: Permission denied) while reading upstream解决办法 NET8在CentOS7下无法执行的问题 Nginx配置文件中,如何配置启用SignalR Error: Failed to download metadata for repo ‘appstream’ – CentOS 8 Mikrotik ROS默认推荐防火墙规则firewall脚本 dotnet堆栈溢出通用排查方法 CMD下查所有3389连接的IP地址 一些名词 NET CORE LINUX 部署 报 A connection was successfully established with the server, but then an error occurred during the pre-login handshake.解决方法 须先停止生成方可关闭解决方案(The build must be stopped before the solution can be closed) 安装最新版本NextCloud Docker、Nginx、整合LetsEncrypt SSL证书 如何将 Windows 10 Enterprise LTSC 2021 评估版升级到完整版 MS SQL 去除字段中的大小写英文、数字、特定符号 MariaDB 配置示例文件 整理一些激活密钥
Nginx的proxy_pass url 反向代理的配置
cnkker.com · 2022-10-23 · via 博客园 - cnkker.com

说到 Nginx 就不得不说 Nginx 的反向代理是多么的好用,一个指令 proxy_pass 搞定反向代理,对于接口代理、负载均衡很是实用,但 proxy_pass 指令后面的参数很有讲究。

网上有很多什么绝对路径、相对路径的说法,其实在实际的应用中就分为两种情况:

url 只是 host

这里指不包含 $uri ,如:

  • http://host - √
  • https://host - √
  • http://host:port - √
  • https://host:port - √
  • http://host/ - x
  • http://host:port/ - x

这时候 location 匹配的完整路径将直接透传给 url ,如:

// 访问:   /                               后端:   /
// 访问:   /api/xx                         后端:   /api/xx
// 访问:   /api/xx?aa                      后端:   /api/xx?aa
location / {
    proxy_pass http://node:8080;
}

// 访问:   /api/                           后端:   /api/
// 访问:   /api/xx                         后端:   /api/xx
// 访问:   /api/xx?aa                      后端:   /api/xx?aa
// 访问:   /api-xx?aa                      后端:
location /api/ {
    proxy_pass http://node:8080;
}

// 访问:   /api/                           后端:   /api/
// 访问:   /api/xx                         后端:   /api/xx
// 访问:   /api/xx?aa                      后端:   /api/xx?aa
// 访问:   /api-xx?aa                      后端:   /api-xx?aa
location /api {
    proxy_pass http://node:8080;
}

url 包含路径

注意,这里的路径哪怕只是一个 / 也是存在的,如:

  • http://host - x
  • https//host/ - √
  • http://host:port - x
  • https://host:port/ - √
  • http://host/api - √
  • http://host/api/ - √

当 proxy_pass url 的 url 包含路径时,匹配时会根据 location 的匹配后的链接透传给 url ,注意匹配后就是这样:

location 规则访问的原始链接匹配之后的路径
location / /  
location / /a a
location / /a/b/c?d a/b/c?d
location /a/ /a/  
location /a/ /a/b/c?d b/c?d

明白匹配之后的路径后,在 proxy_pass url 包含路径时,将会把匹配之后的路径透传给 url ,如: