负载均衡 IPv4 CLB 场景下获取客户端真实 IP

CLB 的四层(TCP/UDP/TCP SSL)和七层(HTTP/HTTPS)服务均支持直接在后端 CVM 上获取客户端真实 IP,无需进行额外配置。

相关产品
负载均衡 产品页,含版本规格、价格与购买入口。

一、负载均衡获取客户端真实 IP 的说明

·四层负载均衡,在后端 CVM 上获取的源 IP 即为客户端 IP。

·七层负载均衡,在 CLB 与后端服务之间使用短连接时,在后端 CVM 上获取的源 IP 即为客户端 IP;在 CLB 与后端服务之间使用长连接时,CLB 不再透传源 IP,你可以通过 X-Forwarded-For 或 remote_addr 字段来直接获取客户端 IP。七层负载均衡的访问日志请参见 配置访问日志到 CLS。

注意:说明:

注意:对于四层负载均衡来说,无需在后端 CVM 上做额外配置即可获取客户端 IP。

注意:对于其他做了 SNAT 的七层负载均衡服务,你需要在后端 CVM 上配置,然后使用 X-Forwarded-For 的方式获取客户端的真实 IP。

下文将对常见的应用服务器配置方案进行介绍。

二、IIS 6 配置方案

1. 下载与安装插件 F5XForwardedFor 模块,根据自己的服务器操作系统版本将x86\\Release或者x64\\Release目录下的F5XForwardedFor.dll拷贝到某个目录,这里假设为C:\\ISAPIFilters,同时确保对 IIS 进程对该目录有读取权限。

2. 打开控制面板,选择程序 > 程序和功能 > 启用或关闭 Windows 功能 > 勾选 Internet Information Services ,并确认该目录下万维网服务 > 应用程序开发功能 > ISAPI 相关项 已勾选,单击确认。

3. 打开 IIS 管理器 > ISAPI筛选器,右键选择添加,弹出添加窗口。

4. 在添加窗口“筛选器名称”中填写“F5XForwardedFor”,“可执行文件”填写F5XForwardedFor.dll的完整路径,单击确定。

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

三、IIS 7 配置方案

1. 下载与安装插件 F5XForwardedFor 模块,根据自己的服务器操作系统版本将x86\\Release或者x64\\Release目录下的F5XFFHttpModule.dll和F5XFFHttpModule.ini拷贝到某个目录,这里假设为C:\\x_forwarded_for,确保对 IIS 进程对该目录有读取权限。

2. 选择 IIS 服务器,双击模块功能。


3. 单击配置本机模块。


4. 在弹出框中单击注册。


5. 添加下载的 DLL 文件:


6. 添加完成后,勾选并单击确定。


7. 在 ISAPI 和 CGI 限制添加如下两个 DLL ,并将限制设置为允许。

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

四、Apache 配置方案

1. 检查 Apache 服务器是否安装了 remoteip_module 模块。Apache 使用 remoteip_module 模块解析 X-Forwarded-For 记录。

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

注意:说明:

2. 修改 Apache 配置/etc/httpd/conf/httpd.conf,在最末尾添加(具体以实际环境为准):

LoadModule rpaf_module modules/mod_rpaf-2.0.soRPAFenable OnRPAFsethostname OnRPAFproxy_ips IP地址(这个 IP 地址首先不是负载均衡提供的公网 IP,具体 IP 多少可以查看 Apache 日志,通常会有2个 都要写上)RPAFheader X-Forwarded-For

3. 添加完成后,重启 Apache。

/usr/sbin/apachectl restart

五、Nginx 配置方案

1. Nginx 作为服务器时,获取客户端真实 IP 使用http_realip_module,可使用nginx -V命令查看是否已安装 http_realip_module 模块。若 Nginx 未安装此模块,需要重新编译 Nginx 增加 –with-http_realip_module。

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-develwget http://nginx.org/download/nginx-1.17.0.tar.gztar zxvf nginx-1.17.0.tar.gzcd nginx-1.17.0./configure –prefix=/path/server/nginx –with-http_stub_status_module –without-http-cache –with-http_ssl_module –with-http_realip_modulemakemake install

2. 修改 nginx.conf 文件。

vi /etc/nginx/nginx.conf

修改如下部分的配置字段和信息:

注意:说明:

注意:其中 xx.xx.xx.xx 需要修改为上一级代理服务器 IP 或者 IP 段。

fastcgi connect_timeout 300;fastcgi send_timeout 300;fastcgi read_timeout 300;fastcgi buffer_size 64k;fastcgi buffers 4 64k;fastcgi busy_buffers_size 128k;fastcgi temp_file_write_size 128k;# 修改如下部分的配置字段和信息# 若代理的回源IP比较分散,或不清楚代理回源IP时,可以写成0.0.0.0/0,代表所有请求都从XFF中获取源IPset_real_ip_from xx.xx.xx.xx;real_ip_header X-Forwarded-For;real_ip_recursive on;

3. 重启 Nginx。

service nginx restart

4. 查看 Nginx 的访问日志,你可以获取客户端的真实 IP。

cat /path/server/nginx/logs/access.log

赞 (0)
上一篇 4天前
下一篇 4天前