Nginx 配置代理
Nginx proxy_pass 配置详解
四种配置的区别
1. location /alarm/ { proxy_pass http://10.25.2.11 }
- 特点: proxy_pass 后面没有斜杠
- 行为: 路径映射是透明的,会将 location 匹配的部分原样传递
- 示例:
- 访问
localhost/alarm/getName
- 实际访问
http://10.25.2.11/getName (去掉了 /alarm/ 前缀)
2. location /alarm/ { proxy_pass http://10.25.2.11/ }
- 特点: proxy_pass 后面有斜杠
- 行为: 会将匹配的路径附加到 proxy_pass 的 URL 后面
- 示例:
- 访问
localhost/alarm/getName
- 实际访问
http://10.25.2.11/alarm/getName (保留了原始路径)
3. location /alarm { proxy_pass http://10.25.2.11/ }
- 特点: location 不以斜杠结尾,proxy_pass 以斜杠结尾
- 行为: 将整个匹配的 URI 附加到 proxy_pass 后面
- 示例:
- 访问
localhost/alarm/getName
- 实际访问
http://10.25.2.11/alarm/getName (保留了原始路径)
4. location /alarm { proxy_pass http://10.25.2.11 }
- 特点: location 和 proxy_pass 都不以斜杠结尾
- 行为: 路径映射是透明的,会将 location 匹配的部分原样传递
- 示例:
- 访问
localhost/alarm/getName
- 实际访问
http://10.25.2.11/getName (去掉了 /alarm 前缀)
理解要点
核心规则
- proxy_pass 末尾无斜杠: Nginx 会去除 location 匹配的部分,将剩余部分传递给后端
- proxy_pass 末尾有斜杠: Nginx 会将整个匹配的路径附加到 proxy_pass 后面
- location 匹配模式:
- 以斜杠结尾: 精确匹配路径
- 不以斜杠结尾: 匹配所有以该前缀开头的路径
记忆技巧
- 当 proxy_pass 以斜杠结尾时,保留原始路径结构
- 当 proxy_pass 不以斜杠结尾时,会去掉 location 匹配的部分
- location 的斜杠影响匹配的精确度,但不影响 proxy_pass 的行为规则