tencent cloud

Web 应用防火墙

动态与公告
产品动态
产品公告
安全公告
新手指引
产品简介
产品概述
产品分类
产品优势
应用场景
套餐与版本说明
支持地域
基本概念
购买指南
计费概述
购买方式
升级方式
续费说明
欠费说明
退费说明
快速入门
入门概述
新手常见问题
操作指南
概览
接入管理
安全运营
防护策略
服务设置
实践教程
WAF 等保测评解读
BOT管理相关
API 安全相关
接入相关
防护与配置相关
API 文档
History
Introduction
API Category
Making API Requests
Asset Management APIs
Billing APIs
Protection Settings APIs
Other APIs
IP Management APIs
Integration APIs
Log Service APIs
Security Overview APIs
Rule Engine APIs
Data Types
Error Codes
常见问题
产品咨询相关
接入相关
使用相关
权限相关
沙箱隔离状态
服务等级协议
WAF 策略
隐私协议
数据处理和安全协议
联系我们
词汇表

如何获取客户端真实 IP

PDF
聚焦模式
字号
最后更新时间: 2025-08-01 09:34:18

WAF 获取客户端真实 IP 说明

WAF 通过反向代理的方式实现网站安全防护,用户访问 WAF 防护的域名时,会在 HTTP 头部字段中添加一条 X-Forwarded-For 记录,用于记录用户真实 IP,其记录格式为 X-Forwarded-For:用户 IP。如果用户访问域名存在多级代理,WAF 将记录靠近 WAF 上一条的代理服务器 IP。例如: 场景一:用户>WAF>源站,X-Forwarded-For 记录为:X-Forwarded-For:用户真实 IP 场景二:用户>CDN > WAF>源站,X-Forwarded-For 记录为: X-Forwarded-For:用户真实 IP,X-Forwarded-For:CDN 回源地址
说明:
场景二中,需要在 WAF 添加域名 时,选择代理情况为“是”,选择代理接入后,可能存在客户端 IP 被伪造的风险。如果您使用腾讯云 CDN,不存在客户端 IP 被伪造的风险,腾讯云 CDN 会对 X-Forwarded-For 信息进重置,只填写 CDN 获取的客户端 IP。(如果使用代理接入,攻击者需要在能直接对 WAF VIP 地址进行请求的情况下才会产生影响,代理接入时用户无法探测到 WAF VIP 地址,请避免代理接入时 WAF VIP 地址泄露)。
负载均衡型 WAF 接入,请参见负载均衡中 如何获取客户端真实 IP
下文将对常见的应用服务器 X-Forwarded-For 配置方案进行介绍:

IIS 7 配置方案

1. 下载与安装插件 F5XForwardedFor 模块,根据自己的服务器操作系统版本将x86\\Release或者x64\\Release目录下的F5XFFHttpModule.dllF5XFFHttpModule.ini拷贝到某个目录,这里假设为C:\\F5XForwardedFor,确保 IIS 进程对该目录有读取权限。
2. 选择 IIS 服务器,双击模块功能。
3. 单击配置本机模块
4. 在弹出框中单击注册
5. 添加下载的 DLL 文件。
6. 添加完成后,勾选并单击确定
7. 在 IIS 服务器的 “ISAPI 和 CGI 限制”中,添加如上两个 DLL ,并将限制设置为允许。
8. 重启 IIS 服务器,等待配置生效。

Apache 配置方案

1. 安装 Apache 第三方模块“mod_rpaf”,需执行如下命令:
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/usr/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
2. 修改 Apache 配置/etc/httpd/conf/httpd.conf,需在最末尾添加:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On

RPAFproxy_ips IP地址 //IP 地址为 WAF 防护域名的回源 IP 地址,可以在 <a href="https://console.tencentcloud.com/guanjia/waf/config">Web应用防火墙控制台</a>,防护配置域名列表中的回源 IP 地址中查看,也可以在服务器后台的日志中查看,只需要将所有需要查看的 IP 都填写上即可。
RPAFheader X-Forwarded-For
3. 添加完成后,重启 Apache。
/usr/sbin/apachectl restart

Nginx 配置方案

1. 当 Nginx 作为服务器时,获取客户端真实 IP,需使用 http_realip_module 模块,默认安装的 Nginx 是没有编译 http_realip_module 模块的,需要重新编译 Nginx,在configure 增加 --with-http_realip_module 选项, 确保 http_realip_module 模块编译进 nginx 中 。编译代码如下:
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure --user=www --group=www --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
make
make install
2. 修改 nginx.conf。

vi /etc/nginx/nginx.conf
修改如下红色部分:
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;

set_real_ip_from IP地址; //IP 地址为 WAF 防护域名的回源 IP 地址,可以在 <a href="https://console.tencentcloud.com/guanjia/instance/domain">Web应用防火墙控制台</a>,域名接入列表中的回源 IP 地址中查看。
real_ip_header X-Forwarded-For;
3. 重启 Nginx。
service nginx restart


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈