nginx 反向代理使用变量的坑

nginx采用反向代理的时候使用变量的坑

正常情况:

conf 复制代码
location ~ ^/prod-api(?<rest>/.*)?$ {
    # 假设 $mes_backend 形如: http://127.0.0.1:16889
    proxy_pass $mes_backend$rest$is_args$args;

    proxy_http_version 1.1;
    proxy_set_header Host              $host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # WebSocket 支持
    proxy_set_header Upgrade           $http_upgrade;
    proxy_set_header Connection        $connection_upgrade;

    # 可选:更稳的请求体转发
    proxy_request_buffering on;
    client_max_body_size 10m;
    proxy_read_timeout 60s;
}

如果你使用变量,仍会把请求转到后端的根路径(或保留了错误的前缀)

预期是 http://域名/prod-api/XXX 到后端是 http://localhost:16888/XXX

实际上到后端是 http://localhost:16888/prod-api/XXX

复制代码
set $mes_backend http://127.0.0.1:16889;

location /prod-api/ {
	proxy_pass $mes_backend;
	
	... 其他代理内容
}

正确写法

复制代码
location ~ ^/prod-api(?<rest>/.*)$ {
  # proxy_pass http://127.0.0.1:16889/;
  # 采用变量的形式,如果是常量的形式就没有这种异常
  proxy_pass $mes_backend$rest;
    
...其他内容
}
相关推荐
工控小楠几秒前
涡街流量计温度数据的协议桥梁:Modbus RTU 转 Profinet 网关的自动化应用
运维·自动化
<但凡.13 分钟前
Linux 修炼:进程控制(一)
linux·运维·服务器·bash
m0_464608261 小时前
Ansible实现自动化运维
运维·自动化·ansible
m0_464608261 小时前
Ansible Playbook:自动化配置管理的利器
运维·自动化·ansible
DDC楼宇自控与IBMS集成系统解读1 小时前
DDC 楼宇自控系统 + 3D 可视化运维管理平台融合解决方案
运维·3d
乌萨奇也要立志学C++2 小时前
【Linux】进程概念(六):进程地址空间深度解析:虚拟地址与内存管理的奥秘
linux·运维
tritone8 小时前
我在阿贝云免费服务器上搭建RustDesk自建服务器(Self-Hosting)的真实体验【推荐】
运维·服务器
2301_800050998 小时前
DNS 服务器
linux·运维·笔记
慌糖8 小时前
自动化接口框架搭建分享-pytest第二部分
运维·自动化·pytest
Lin_Aries_04218 小时前
容器化简单的 Java 应用程序
java·linux·运维·开发语言·docker·容器·rpc