在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 张洪君


相关推荐
智商网输送线配件9 分钟前
非标自动化零部件采购避坑指南:从零散补货到一站式协同的实战路径
运维·自动化
东鹏特饮11 分钟前
15个实用Linux运维脚本
linux·运维·shell·脚本·redhat·常用生产脚本
承渊政道11 分钟前
自建服务越来越多怎么管理?Docker部署Flare,搭一个自己的数字入口
运维·docker·容器·内网穿透·cpolar·nas·flare
螺蛳粉 螺蛳粉21 分钟前
第五篇:Keepalived + LVS 四层负载均衡高可用实战:DR 模式全流程
运维·负载均衡·lvs·keepalived·高可用
Crazy________22 分钟前
Linux内核核心机制全解析:从驱动到进程启动
运维
新时代牛马24 分钟前
Linux PREEMPT_RT 详解(5.10.268-rt164)
linux·运维·服务器
IT技术分享社区39 分钟前
在 Windows 上跑未改动的 Linux 程序:微软 LiteBox v0.1 把这件事变简单了
linux·运维·windows·microsoft·开源
迪康妍妍1 小时前
终端安全实战:用迪康终端安全管理系统实现U盘四分档管控与全量审计
android·运维·网络·安全·电脑
tianyuanwo1 小时前
【软考高级系统架构设计师】05 - DevOps & CI/CD专题备考
ci/cd·系统架构·devops
Qt云程序员1 小时前
按钮是图片、系统没接口?我用找图加OCR把它自动化了
运维·自动化·ocr