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

获取的是Azure Front Door IP而非客户端IP,如何解决?

获取Azure Front Door后方应用的客户端真实IP

可用的请求头

Azure Front Door会通过两个请求头传递客户端真实IP:

  • X-Azure-ClientIP:直接存储客户端的真实IP,格式单一无需拆分,是优先选择的头
  • X-Forwarded-For:存储经过的代理IP链,第一个IP即为客户端真实IP,值为逗号分隔的IP列表

你当前获取X-Forwarded-For为空,大概率是因为应用所在的Azure服务(比如App Service)未开启信任代理设置,导致代理传递的头被屏蔽;或者Front Door的转发配置被意外关闭(默认是开启的)。

修复后的代码示例

// 优先读取X-Azure-ClientIP
String clientIp = request.getHeader("X-Azure-ClientIP");

// 若X-Azure-ClientIP为空,尝试解析X-Forwarded-For
if (clientIp == null || clientIp.isBlank()) {
    String xForwardedFor = request.getHeader("X-Forwarded-For");
    if (xForwardedFor != null && !xForwardedFor.isBlank()) {
        // 取第一个IP(客户端真实IP)
        clientIp = xForwardedFor.split(",")[0].trim();
    } else {
        // 最后降级到remoteAddr(返回Front Door的IP)
        clientIp = request.getRemoteAddr();
    }
}

必要的配置检查

  1. Azure App Service信任代理设置:
    进入Azure门户 -> 你的App Service -> 设置 -> 配置 -> 常规设置,找到「信任代理」选项并设置为开启。开启后,App Service才会信任Front Door传递的代理头信息。
  2. Front Door转发配置:
    检查Front Door的路由规则,确认「转发客户端IP」选项处于启用状态(默认启用)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:09:57