后端服务器通过ALB获取客户端真实IP_负载均衡(SLB)-阿里云帮助中心

TL;DR

本文介绍了如何通过阿里云应用型负载均衡ALB获取客户端真实IP。通过检查ALB监听配置,并配置后端服务器(Nginx, Apache, IIS)以记录HTTP头部的X-Forwarded-For字段,即可获取客户端IP。文章还提供了详细的操作步骤、常见问题解答(如100开头的IP访问、与其他产品配合)以及相关安全建议,并附有相关文档链接。

Summary

好的,这是根据你提供的文本内容生成的Markdown列表格式总结:

  1. 文章主题:介绍如何通过阿里云应用型负载均衡ALB获取客户端真实IP。

  2. 获取方法:通过HTTP头部的X-Forwarded-For字段获取客户端真实IP。

  3. X-Forwarded-For格式
    X-Forwarded-For: <客户端真实IP, 代理服务器1-IP, 代理服务器2-IP, ...>
    

    获取的第一个IP地址为客户端真实IP。

  4. 操作步骤
    • 步骤一:检查ALB监听配置
      • 登录ALB控制台,选择地域和目标实例。
      • 在监听页签,确认已开启通过X-Forwarded-For头字段获取客户端IP功能(默认开启)。
    • 步骤二:配置后端服务器:根据服务器类型进行配置,包含Nginx, Apache和IIS三种。
      • Nginx配置
        • 检查是否安装http_realip_module模块 (Nginx 1.0.4+ 支持)。
        • 修改Nginx配置文件,确保记录X-Forwarded-For的值。
            http {
          log_format  main  '$remote_addr- $remote_user [$time_local] "$request" '
                              '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" "$http_x_forwarded_for"';
            }
          
        • 重新加载Nginx配置文件。
      • Apache配置
        • 检查是否安装remoteip_module模块 (Apache 2.4.0+ 支持)。
        • 修改Apache配置文件,增加%{X-Forwarded-For}i,用于记录X-Forwarded-For信息。 ```shell
        LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b" common

        ```

        • 重启Apache服务。
      • IIS配置
        • 下载并解压F5XForwardedFor文件。
        • 将F5XFFHttpModule.dll和F5XFFHttpModule.ini拷贝到IIS进程有读取权限的目录。
        • 在IIS管理器中注册模块。
        • 配置IIS日志,记录X-Forwarded-For字段信息。
        • 重启IIS服务器。
    • 步骤三:验证配置:通过查看对应服务器的日志文件进行验证。
      • Nginx日志:检查/var/log/nginx/access.log$http_x_forwarded_for字段的第一个IP地址应为客户端真实IP。
      • Apache日志:检查/var/log/httpd/access_log%{X-Forwarded-For}i字段的第一个IP地址应为客户端真实IP。
      • IIS日志:在IIS日志文件路径中,检查X-Forwarded-For字段对应的第一个IP地址是否为客户端真实IP。
  5. 常见问题
    • 100开头的IP访问:负载均衡系统进行健康检查,IP地址段为100.64.0.0/10,需要配置安全组放行规则。
    • 与WAF/CDN/GA配合:这些产品默认透传X-Forwarded-For字段,无需额外配置。可以通过在其他产品中指定header字段记录客户端真实IP避免XFF伪造。
      • 安全性加固:验证和过滤 XFF 头部,使用防火墙和访问控制列表,使用SSL/TLS加密。
    • ACK场景:在ACK集群中使用负载均衡时,获取方式相同,具体操作有部分差异,请参考相关文档。
  6. 相关文档