详情页标题前

阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

详情页1

当使用ALB监听转发流量时,您可通过HTTP头部的X-Forwarded-For字段获取客户端真实IP地址。

获取方法介绍

七层负载均衡(HTTP或HTTPS协议)支持在HTTP头部的X-Forwarded-For字段保留客户端真实IP信息,服务器进行相应配置后即可获取到客户端真实IP地址。

X-Forwarded-For字段格式如下:

X-Forwarded-For: 

当使用此方式获取客户端真实IP时,获取的第一个地址就是客户端真实IP。

步骤一:检查监听已开启通过X-Forwarded-For获取功能

  1. 登录应用型负载均衡ALB控制台。

  2. 在顶部菜单栏,选择实例所属的地域。

  3. 实例页面,找到目标实例,单击实例ID。

  4. 在实例详情页面,单击监听页签,找到目标监听,单击监听ID。

  5. 在监听详情页面,查看到附加HTTP头字段包括开启通过X-Forwarded-For头字段获取来访者客户端IP

    说明

    ALB默认开启通过X-Forwarded-For头字段获取客户端真实IP功能,不支持关闭。

步骤二:配置后端服务器

请根据您所使用的服务器类型,选择对应的操作步骤。

配置Nginx服务器

此处以CentOS 7.9操作系统、Nginx 1.20.1 版本配置为例介绍。具体请以您实际使用的环境为准。

  1. 在服务器执行nginx -V | grep http_realip_module命令,检查Nginx服务器是否安装了http_realip_module模块。Nginx使用http_realip_module模块解析X-Forwarded-For记录。

    如果返回信息中包括--with-http_realip_module,表示已安装http_realip_module模块,可进行下一步。

    已安装http_realip_module模块返回信息示例

    nginx version: nginx/1.20.1
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
    TLS SNI support enabled
    configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
    

    说明

    • Nginx 1.0.4 版本(2011年)开始支持http_realip_module 模块。如果您使用的Nginx版本过老,建议您备份配置数据并升级Nginx版本。

    • 如果未安装http_realip_module模块,需要重新编译安装Nginx并安装http_realip_module 模块。操作较为繁琐,建议您使用类似yum的包管理器安装Nginx。

  2. 修改Nginx服务配置文件并保存,修改点可参考下方说明。执行nginx -t命令查看配置文件所在路径,默认通常为 /etc/nginx/nginx.conf,具体请以实际环境为准。

    http {
      # 确保设置$http_x_forwarded_for,该变量用于记录X-Forwarded-For的值
      log_format  main  '$remote_addr- $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      
      # ...
    }
    

  3. 执行sudo nginx -s reload命令,重新加载Nginx配置文件。

配置Apache服务器

此处以CentOS 7.9操作系统、Apache 2.4.6 版本配置为例介绍。具体请以您实际使用的环境为准。

  1. 在服务器执行httpd -M | grep remoteip_module命令,检查Apache服务器是否安装了remoteip_module模块。Apache使用remoteip_module模块解析X-Forwarded-For记录。

    如果返回信息中包括remoteip_module (shared),表示已安装该模块,可进行下一步。

    说明

    • Apache 2.4.0 版本(2012年)开始支持remoteip_module 模块。如果您使用的Apache版本过老,建议您备份配置数据并升级Apache版本。

    • 如果未安装remoteip_module 模块,需要重新编译安装Apache并安装remoteip_module 模块。操作较为繁琐,建议您使用类似yum的包管理器安装Apache。

  2. 修改Apache服务配置文件并保存,修改点可参考下方说明。默认通常为/etc/httpd/conf/httpd.conf,具体请以实际环境为准。

    # ...
    
    	# 增加%{X-Forwarded-For}i ,用于记录X-Forwarded-For信息
      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
    	#...
    
    # ...

  3. 执行sudo systemctl restart httpd命令,重启apache服务。

配置IIS服务器

此处以Windows Server 2016操作系统配置为例介绍。具体请以您实际使用的环境为准。

  1. 下载并解压F5XForwardedFor文件。

  2. 根据自己的服务器操作系统版本将x86\x64\目录下的F5XFFHttpModule.dllF5XFFHttpModule.ini拷贝到某个目录,确保IIS进程对该目录有读取权限。

  3. 服务器管理器中,打开IIS管理器

  4. 选中服务器,双击模块功能。

    阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

  5. 单击配置本机模块,然后在弹出的对话框中,单击注册

    阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

  6. 添加下载的.dll文件。

    1. 输入文件名称,选择路径之后,单击确定阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

    2. 此时系统会自动选中新注册的模块,请单击确定阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

  7. 回到服务器主页,双击日志模块,配置日志格式,在日志中记录X-Forwarded-For字段信息。

    1. 单击选择字段

      阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

    2. 单击左下角添加字段,添加如下日志字段并确认。

      阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

    3. 单击右上角应用,完成修改。

  8. 重启IIS服务器,等待配置生效。

步骤三:验证后端服务器已获取客户端真实IP

请根据您所使用的服务器类型,选择对应的操作步骤。

Nginx服务器

当Nginx作为后端服务器时,您可以通过检查Nginx日志来判断是否成功获取到了客户端的真实IP地址。

Nginx日志文件默认路径为:/var/log/nginx/access.log

每行日志中,$http_x_forwarded_for变量对应的字段中,第一个IP地址即为客户端真实IP地址。

阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

Apache服务器

当Apache作为后端服务器时,您可以通过检查Apache日志来判断是否成功获取到了客户端的真实IP地址。

Apache日志文件默认路径为:/var/log/httpd/access_log

每行日志中,%{X-Forwarded-For}i 对应的字段中,第一个IP地址即为客户端真实IP地址。

阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

IIS服务器

当IIS作为后端服务器时,您可以通过检查IIS日志来判断是否成功获取到了客户端的真实IP地址。

IIS日志文件路径,可在日志模块查看。

阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

每行日志中,X-Forwarded-For对应的字段中,第一个IP地址即为客户端真实IP地址。

阿里云负载均衡通过ALB获取客户端真实IP-云淘科技

相关文档

不同负载均衡类型获取客户端真实IP方式有所不同:

  • 当您使用CLB七层监听时,可通过X-Forwarded-For字段获取客户端真实IP,可参考通过CLB七层监听获取客户端真实IP。

  • 当您使用CLB四层监听时,可通过直接获取或开启Proxy Protocol功能获取客户端真实IP,可参考通过CLB四层监听获取客户端真实IP。

  • 当您使用NLB时,可通过服务器组客户端地址保持功能或开启Proxy Protocol功能获取客户端真实IP,可参考通过NLB获取客户端真实IP。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/169454.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云负载均衡通过CLB七层监听获取客户端真实IP-云淘科技

    当使用CLB七层监听转发流量时,您可通过HTTP头部的X-Forwarded-For字段获取客户端真实IP地址。 获取方法介绍 七层负载均衡(HTTP或HTTPS协议)支持在HTTP头部的X-Forwarded-For字段保留客户端真实IP信息,服务器进行相应配置后即可获取到客户端真实IP地址。 X-Forwarded-For字段格式如下: X-Forwar…

    阿里云负载均衡 2023年12月10日
  • 阿里云日志服务SLS日志字段详情-云淘科技

    本文介绍Kubernetes Ingress访问日志的字段详情。 字段 说明 body_bytes_sent 发送给客户端的http body字节数。 client_ip 请求客户端IP地址。 host 优先从请求参数中获取host,如果获取不到则从host header取值,如果仍获取不到则以处理请求的后端服务器IP地址作为host。 http_refer…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS使用e_table_map函数对HTTP请求返回码进行富化-云淘科技

    Nginx日志是运维网站的重要信息,日志服务通过e_table_map函数快速对HTTP请求的返回码进行富化,便于您分析日志数据。本文介绍通过日志服务数据加工富化HTTP返回码的操作方法。 前提条件 已采集到Nginx日志数据。更多信息,请参见数据采集。 场景描述 某企业在应用A开发过程中,统一定义了HTTP请求的返回码信息(数据量不定期更新),便于统一维护…

    2023年12月10日
  • 阿里云负载均衡概述-云淘科技

    配置HTTPS监听,您可以直接使用SSL证书服务中的证书或者将所需的第三方签发的服务器证书和CA证书上传到传统型负载均衡CLB(Classic Load Balancer)。 CLB支持两种来源的证书: 在阿里云SSL证书服务中签发或托管的证书:从阿里云SSL证书服务选择,可实现证书到期提醒和一键续期。 暂未支持客户端CA证书。 第三方签发的证书:上传第三方…

    阿里云负载均衡 2023年12月10日
  • 阿里云负载均衡HTTP头字段-云淘科技

    HTTP头字段是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分。HTTP头字段可以根据需求自定义,因此在Web服务器和浏览器上可能存在非标准的HTTP头字段。本文介绍应用型负载均衡ALB(Application Load Balancer)支持的非标准头字段。 ALB支持的头字段 字段名 说明 适用监听协议 X-Forwarded-For 在您…

    阿里云负载均衡 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。