如何借助Azure工具定位调用App Service根路径的未知请求发起方?
定位根路径请求发起方的步骤
1. 查看Front Door访问日志
Front Door会完整记录所有入站请求的核心信息,包括真实客户端IP:
- 登录Azure门户,找到你的Front Door实例
- 进入「日志」选项卡,确保已启用日志收集(若未启用,先配置存储账户或Log Analytics工作区)
- 使用Kusto查询筛选根路径请求:
其中AzureDiagnostics | where Category == "FrontdoorAccessLog" | where RequestPath == "/" | project ClientIp, RequestTimestamp, RequestMethod, UserAgentClientIp字段就是请求的真实发起方IP,结合UserAgent还能进一步判断请求类型(比如爬虫、自动化工具或健康探测)。
2. 修复App Service的IP传递配置
App Insights显示0.0.0.0是因为未正确解析Front Door转发的真实IP,需调整App Service配置:
- 进入App Service的「配置」→「常规设置」,开启「启用转发代理」
- 添加应用设置
WEBSITE_LOAD_BALANCER并设为true,确保App Service识别Front Door作为反向代理 - 确认Front Door的规则中已启用
X-Forwarded-For头转发(默认开启,若被修改需恢复)
配置完成后,App Insights的请求遥测中将直接显示真实客户端IP,也可通过自定义代码将X-Forwarded-For头添加到遥测属性中。
3. 排查是否为Front Door健康探测请求
大量根路径请求可能来自Front Door的自动健康探测:
- 进入Front Door的「后端池」→「健康探测」设置,查看探测路径是否为根路径
/ - 如果是,建议修改为专门的健康检查路径(如
/health),并在API中实现对应的健康端点 - 可通过Front Door日志中的
ClientIp是否属于Front Door健康检查IP段(Azure官方文档可查对应范围)来确认
4. 关联Front Door与App Insights日志
使用Azure Monitor的跨资源查询,将Front Door日志与App Insights日志关联,精准匹配请求:
// 提取Front Door根路径请求信息 let fdLogs = AzureDiagnostics | where Category == "FrontdoorAccessLog" | where RequestPath == "/" | project fd_ClientIp = ClientIp, fd_CorrelationId = CorrelationId, fd_Time = RequestTimestamp; // 提取App Insights对应请求 let aiLogs = AppRequests | where Url == "/" | project ai_CorrelationId = operation_Id, ai_Time = timestamp; // 关联日志匹配真实IP fdLogs | join aiLogs on $left.fd_CorrelationId == $right.ai_CorrelationId | project fd_ClientIp, fd_Time, ai_Time
通过CorrelationId(关联ID)匹配后,就能直接对应App Insights中的请求与Front Door记录的真实IP。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

