You need to enable JavaScript to run this app.
文档中心
负载均衡

负载均衡

复制全文
下载 pdf
最佳实践
后端服务器获取客户端源IP
复制全文
下载 pdf
后端服务器获取客户端源IP
本文为您介绍后端服务器如何获取访问 ALB 的客户端源 IP 地址。​
基本原理​
  • ALB 的监听器(HTTP监听器、HTTPS监听器)通过配置后端服务器,可以使用 X-Forwarded-For 的方式获取客户端的真实 IP 地址。​
  • 真实的客户端 IP 会被 ALB 放在 HTTP 头部的 X-Forwarded-For 字段,字段中的第一个地址就是客户端真实 IP 。具体格式如下:X-Forwarded-For: 来访者真实IP, 代理服务器1-IP, 代理服务器2-IP, ...​
配置步骤​
操作系统​
本文以 CentOS 7.6 为例,您也可以按需替换为 CentOS 7.9、veLinux 1.0(CentOS兼容版)等CentOS 7系镜像。​
Web应用服务器类型​
请您根据后端服务器配置的 Web应用服务器类型选择适当的配置步骤。本文为您介绍以下两种Web服务器:​
  • Nginx:高性能的 HTTP 和反向代理的轻量级 Web服务器,本文以 Nginx 1.17.0 为例。​
  • Apache:性能稳定的 Web网页服务器,本文以 Apache 2.4.6 为例。​
配置Nginx服务器​
  1. 参考登录Linux实例登录目标后端服务器。​
  1. 依次执行以下命令,安装http_realip_module。​
  • yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel​
  • wget https://nginx.org/download/nginx-1.17.0.tar.gz​
  • tar zxvf nginx-1.17.0.tar.gz​
  • cd nginx-1.17.0​
  • ./configure --prefix=/path/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module​
  • make​
  • make install​
  1. 执行以下命令,打开nginx.conf文件。​
  • vi /path/server/nginx/conf/nginx.conf​
  1. 按i进入编辑模式,在以下 server 配置信息后添加新的配置字段和信息。​
  • ​
    server {​
    listen 80;​
    server_name localhost;​
    ​
  • 需要添加的配置字段和信息:​
  • ​
    set_real_ip_from 100.64.0.0/10;​
    real_ip_header X-Forwarded-For;​
    ​
说明​
  • 您可以将代理服务器的网段添加到 set_real_ip_from <IP_cidr>,以便获取代理服务器的IP地址。例如,添加 ALB 的IP地址段(100.64.0.0/10是 ALB的保留地址,其他用户无法分配到该网段内,不会存在安全风险)。​
  • 多个IP地址段之间使用逗号分隔。​
  1. 按ESC退出编辑模式。​
  1. 输入:wq保存并退出文件。​
  1. 执行以下命令,启动 Nginx。​
  • /path/server/nginx/sbin/nginx​
  1. 执行以下命令,查看 Nginx 的访问日志,您可以获取真实的客户端 IP。​
  • cat /path/server/nginx/logs/access.log​
配置Apache服务器​
  1. 参考登录Linux实例登录目标后端服务器。​
  1. 执行以下命令,查看Apache版本。​
  • httpd -v​
  • 回显如下,表示Apache版本为2.4.6。​
  • ​
    Server version: Apache/2.4.6 (CentOS)​
    Server built: Mar 24 2022 14:57:57​
    ​
  1. 执行以下命令,打开 httpd.conf 文件。​
  • vi /etc/httpd/conf/httpd.conf​
  1. 按i进入编辑模式,修改日志格式并在文件末尾添加相关配置信息。​
  • 日志格式修改如下:​
  • ​
    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #在原内容中添加配置%{X-Forwarded-For}i​
    CustomLog "logs/access_log" common #去掉此行配置前的注释符#:​
    ​
  • 在文件末尾添加的配置字段和信息:​
  • ​
    LoadModule remoteip_module modules/mod_remoteip.so​
    RemoteIPHeader X-Forwarded-For​
    RemoteIPInternalProxy 100.64.0.0/10​
    ​
说明​
  • 您可以将代理服务器的网段添加到 RemoteIPInternalProxy <IP_cidr>,以便获取代理服务器的IP地址。例如,添加 ALB 的 IP 地址段(100.64.0.0/10是 ALB 的保留地址,其他用户无法分配到该网段内,不会存在安全风险)。​
  • 多个IP地址段之间使用逗号分隔。​
  1. 按ESC退出编辑模式。​
  1. 输入:wq保存并退出文件。​
  1. 执行以下命令,重启 Apache。​
  • systemctl restart httpd​
  1. 执行以下命令,查看 Apache 的访问日志,您可以获取真实的客户端 IP。​
  • cat /etc/httpd/logs/access_log​
​
最近更新时间:2026.08.06 14:30:31
这个页面对您有帮助吗?
有用
有用
无用
无用