Discuz! X3.5 在 CDN / WAF / 负载均衡 环境下获取真实客户端 IP 的配置方法

Discuz! X3.5 在 CDN / WAF / 负载均衡 环境下获取真实客户端 IP 的配置方法

下面是伪原创改写版本,在不改变技术含义的前提下,对结构和表述做了重写,降低重复度,可直接使用:


标题

Discuz! X3.5 在 CDN / WAF / 负载均衡 环境下获取真实客户端 IP 的配置方法

正文内容

在进行下述配置之前,请务必确认当前 Discuz! X3.5 是否已经能够正确识别访客真实 IP
如果站点目前获取的已经是真实 IP,请不要再按本文步骤进行修改,否则可能导致 IP 判断异常。


一、修改 Discuz 核心配置文件

打开文件:

config/config_global.php

找到以下配置项:

$_config[‘security’][‘onlyremoteaddr’] = 1;

将数值 1 修改为 0

$_config[‘security’][‘onlyremoteaddr’] = 0;


二、启用 IPGetter 功能

在同一文件中,向下找到 IPGETTER 相关配置区域,例如:

// ————————-  CONFIG IPGETTER  ————————– //

$_config[‘ipgetter’][‘setting’] = ”;

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_X_FORWARDED_FOR’;

将其中的:

$_config[‘ipgetter’][‘setting’] = ”;

修改为:

$_config[‘ipgetter’][‘setting’] = ‘header’;

如果已经是 header,则无需调整。

到这里为止,大多数 CDN 环境已经可以正确获取真实 IP,建议先测试效果。


三、针对不同 CDN 厂商的进一步优化

如果你使用的 CDN 属于以下厂商之一,可以在前述步骤完成的基础上,根据厂商官方建议调整请求头字段,以提高 IP 识别准确性。

需要修改的配置为:

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_X_FORWARDED_FOR’;

1. Cloudflare

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_CF_CONNECTING_IP’;


2. 阿里云 CDN

方案一(常见):

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_ALI_CDN_REAL_IP’;

方案二(需配合后台配置,不保证适用):
在阿里云 CDN 回源设置中自定义 Header:

  • Header 名称:X-Real-IP
  • Header 值:$remote_addr

随后修改为:

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_X_REAL_IP’;


3. 腾讯云 CDN

需在腾讯云 CDN 后台配置回源 Header:

  • Header 名称:X-Client-IP
  • Header 值:$client_ip

Discuz 中设置为:

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_X_CLIENT_IP’;


4. 华为云 CDN

根据官方文档及用户经验反馈,
华为云 CDN 获取真实 IP 通常需要提交工单,由官方为单独域名进行配置
配置完成后,即可正常获取客户端 IP。


5. 又拍云

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_X_REAL_IP’;


6. Fastly

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_FASTLY_CLIENT_IP’;


7. Microsoft Azure

$_config[‘ipgetter’][‘header’][‘header’] = ‘HTTP_X_AZURE_CLIENTIP’;


四、关于兼容性说明

由于 CDN / WAF 厂商众多,且策略各不相同,本文无法覆盖所有场景。
若调整后仍无法正确获取真实 IP,建议结合厂商最新官方文档进行排查,或通过实际访问测试 Header 值。


五、UCenter(非独立模式)额外配置

如果站点未启用 UCenter 独立模式,还需要同步修改 UCenter 的配置。

打开文件:

uc_server/data/config.inc.php

(若使用自定义 UC 路径,请替换为对应目录;部分早期 X3.5 版本可能不存在,可直接在文件末尾添加)

找到或添加以下内容:

define(‘UC_ONLYREMOTEADDR’, 1);

define(‘UC_IPGETTER’, ‘header’);

define(‘UC_IPGETTER_HEADER’, serialize(array(‘header’ => ‘HTTP_X_FORWARDED_FOR’)));

将:

define(‘UC_ONLYREMOTEADDR’, 1);

修改为:

define(‘UC_ONLYREMOTEADDR’, 0);

其中 UC_IPGETTER_HEADER 的 Header 值,同样可参考前文针对 CDN 的配置方式进行调整。

原创文章,作者:中国IPv6网,如若转载,请注明出处:https://www.ipv6s.com/basis/application/202604284364.html

(0)
中国IPv6网的头像中国IPv6网
OpenClaw AI 助手框架 Linux 平台完整部署教程,包含官方指南、空白服务器部署、国内模型适配和常见问题解决(2026最新版)
上一篇 2026年3月12日 下午9:22
下一篇 2010年8月9日 上午12:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注