在Azure DevOps Server中实现用户端原地址透传(X-Forward-For)

Contents

1. 场景描述

在Azure DevOps Server的典型部署场景中(如下图),一般都会部署多台应用服务器,以此实现应用服务器层面的负载均衡,满足多用户高并发访问的场景。在应用服务器之间实现负载均衡,许多企业都使用了独立的负载设备(例如F5)。


在这种网络结构中,用户的原始IP地址一般无法直接传递给Azure DevOps Server的应用层服务器,从而导致应用服务器的日志中记录的源地址(c-ip)一直是负载均衡设备的地址;原因是,IIS 默认只会记录 TCP 连接的远端地址;当请求经过负载均衡器或反向代理时,IIS 实际上只和负载均衡器建立了 TCP 连接,所以它看到的"客户端 IP"就是负载均衡器的 IP,而不是用户的真实 IP。


为了解决这个问题,需要负载均衡器启用IP地址透传(X-Forwarded-For)的功能;就是当数据经过负载均衡器时,设备在TCP的请求头中加入X-Forwarded-For字段,并将用户的原始IP填写到这个字段中;这样在Azure DevOps Server所在的应用服务器中,就可以读取到X-Forwarded-For的值,从而获取原始用户的IP地址。

2. 解决方案

  • 负载均衡器启用X-Forwarded-For:不同的负载均衡器启用方式不一样,可以根据实际情况做好对应的配置

  • Azure DevOps Server中修改配置

    下面我们来介绍如何在Azure DevOps Server的应用服务器中实现这样的功能。

    • 使用管理员身份登录Azure DevOps Server的应用服务器,并打开IIS

    • 在IIS中找到Azure DevOps Server对应的网站,并在功能页签中,双击Logging按钮

      image
  • 在日志配置界面中,选择字段;在弹出的窗口中选的添加字段

    image
  • 在添加字段的界面中,填写X-Forwarded-For的相关信息,可以和下图保持一致

    image
  • 确认,并点击页面右上角的Aplly按钮

    注意,Azure DevOps Server会自动重启

    image
  • 再次打开IIS的日志文件,我们可以看到文件中新增了X-Forwarded-For字段

    image

    在实际应用场景中,这个X-Forwarded-For字段会记录原始用户的IP地址,为未来排查问题、审计溯源等应用场景提供完整的数据。

https://www.cnblogs.com/danzhang

Azure DevOps MVP 张洪君


相关推荐
Archy_Wang_119 小时前
LVS+KeepAlived+Nginx实现企业级业务高可靠部署的实战教程
运维·nginx·lvs
张文君20 小时前
docker使用代理拉取镜像
运维·docker·容器
陌路2021 小时前
Docker教程从入门到精通(0基础)
运维·docker·容器
IT小白杨21 小时前
防关联用指纹浏览器还是虚拟机好?2026年技术架构深度对比与选型决策
chrome·经验分享·microsoft·架构·安全架构·指纹浏览器
Tongzhi20261 天前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法
数据知道1 天前
宽字节注入、二次注入、堆叠注入:高级 SQLi 专题
linux·运维·安全·网络安全
2301_780789661 天前
DDoS 攻击溯源:DNS 水印标记 + 区块链存证的双保险
运维·服务器·网络·云原生·ddos
童槿顏丶1 天前
GitLab部署到Linux
linux·运维·gitlab
小柒儿3361 天前
从单Agent到多智能体系统:多智能体协作重塑自动化边界
运维·自动化
QYR-分析1 天前
注塑机机械手自动化装备行业发展研判:存量升级催生增量红利,2032 年市场规模逼近 9 亿美元
运维·自动化