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

Azure网关后Crowd/Confluence:Nginx去除XFF头部端口方法

解决Nginx反向代理去除X-Forwarded-For头部端口的配置方案

针对Azure App Gateway转发带端口的X-Forwarded-For(XFF)导致Crowd/Confluence误识别为IPv6的问题,以下是两种可行的Nginx配置方案:


方案1:提取XFF中的纯IP(单IP场景)

如果Azure传递的XFF格式为客户端IP:端口,可通过正则匹配直接提取IP部分并覆盖传给后端的XFF头部:

location /crowd {
    proxy_pass http://localhost:8095/crowd;
    
    # 从Azure传来的XFF中剥离端口,保留纯IP
    set $clean_xff $http_x_forwarded_for;
    # 处理IPv4带端口的情况
    if ($clean_xff ~* "^(\d+\.\d+\.\d+\.\d+):\d+$") {
        set $clean_xff $1;
    }
    # 兼容IPv6带端口的场景(可选)
    if ($clean_xff ~* "^(\[[0-9a-fA-F:]+\]):\d+$") {
        set $clean_xff $1;
    }
    
    # 将处理后的纯IP传给后端Crowd
    proxy_set_header X-Forwarded-For $clean_xff;
    # 建议同步设置其他反向代理必要头部
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $host;
}

方案2:批量处理XFF链中的端口(多IP场景)

如果Azure传递的XFF包含多个带端口的IP(如客户端IP:端口, GatewayIP:端口),推荐用map指令高效批量处理:

先在http块中定义映射规则:

map $http_x_forwarded_for $clean_xff {
    # 匹配IPv4带端口的IP段,保留IP部分
    ~*^(?<ip>\d+\.\d+\.\d+\.\d+):\d+(, .*)?$ $ip$2;
    # 匹配IPv6带端口的IP段,保留IP部分
    ~*^(?<ip>\[[0-9a-fA-F:]+\]):\d+(, .*)?$ $ip$2;
    # 默认情况直接返回原XFF
    default $http_x_forwarded_for;
}

再在location块中调用处理后的变量:

location /crowd {
    proxy_pass http://localhost:8095/crowd;
    proxy_set_header X-Forwarded-For $clean_xff;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $host;
}

为什么之前的配置未生效?

你之前尝试的proxy_set_header X-Forwarded-For $remote_addr;没效果,大概率是因为:

  • Nginx默认会继承上层(http/server块)的proxy_set_header X-Forwarded-For配置(通常为$proxy_add_x_forwarded_for,会追加$remote_addr到原XFF后),而非直接覆盖;
  • 需确保location块中的配置优先级高于上层,直接指定新值即可覆盖原有规则。

验证配置有效性

修改配置后重启Nginx:

nginx -s reload

可修改Nginx日志格式,同时打印收到的XFF和发送给后端的XFF,确认处理效果:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "收到的XFF:$http_x_forwarded_for" "发送的XFF:$sent_http_x_forwarded_for"';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:50:24