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;
    
...其他内容
}
相关推荐
ITKEY_10 小时前
ssh中neovim无法复制文本 clipboard
运维·ssh
Bruce_Liuxiaowei11 小时前
Windows系统错误6118全面解决方案:修复此工作组的服务器列表当前无法使用
运维·服务器·windows·网络安全
坐吃山猪11 小时前
zk02-知识演进
运维·zookeeper·debian
Lynnxiaowen11 小时前
今天我们开始学习python语句和模块
linux·运维·开发语言·python·学习
vue学习12 小时前
docker 运行容器限制内存、限制磁盘 IO
运维·docker·容器
mucheni12 小时前
迅为RK3588开发板Ubuntu 系统开发ubuntu终端密码登录
linux·运维·ubuntu
ZKNOW甄知科技12 小时前
客户案例 | 派克新材x甄知科技,构建全场景智能IT运维体系
大数据·运维·人工智能·科技·低代码·微服务·制造
山塘小鱼儿13 小时前
open-webui docker高速下载&本地部署
运维·docker·容器
G311354227313 小时前
云服务器怎么设置虚拟IP,云服务器能起虚拟ip吗
运维·服务器·tcp/ip
huangyuchi.15 小时前
【Linux网络】初识网络,网络的基础概念
运维·服务器·ip地址·tcp/ip协议·linux网络·mac地址·网络传输流程