You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx如何根据Authorization请求头实现条件流量镜像功能

解决Nginx条件流量镜像的配置方案

核心思路

Nginx的mirror指令支持传入动态变量作为镜像目标,当变量值为空时,镜像操作会自动跳过,无需在if块中声明。我们可以通过map指令根据Authorization请求头的存在情况动态生成镜像目标路径,规避if块不支持mirror指令的限制。

调整后的完整配置

# 必须放在http块层级,和upstream同级
map $http_authorization $mirror_target {
    # 默认值为空,不触发镜像
    default "";
    # 正则匹配任意非空的Authorization请求头,赋值为镜像路径
    "~." "/mirror";
}

upstream backend {
    server backend.local:10000;
}

upstream test_backend {
    server test.local:20000;
}

server {
    server_name proxy.local;
    listen 8000;

    location / {
        # 直接使用变量控制镜像,无需if
        mirror $mirror_target;
        proxy_pass http://backend;
    }

    location = /mirror {
        internal;
        proxy_pass http://test_backend$request_uri;
    }
}

说明

  • 原配置报错的原因是mirror指令不属于rewrite模块支持的指令,无法在if块的上下文中使用
  • map块必须定义在http配置层级,不能放在server或location块内
  • 正则~.表示匹配任意长度大于0的字符串,只要请求携带非空的Authorization头,就会触发镜像逻辑

内容的提问来源于stack exchange,提问作者Alireza Beitari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:54:06