前段时间用腾讯云的轻量服务器做了个反代加速
之后就发现评论识别的 IP 全都是反代服务器的 IP,这样看着就非常不爽。
评论拦截的设置也不生效了,而且开启其他 CDN 也会出现这个问题。
P站id=84699476(原神真好玩)
其实这个问题还是非常简单的,主要的原因是因为 WordPress 本身是用“REMOTE_ADDR”函数来获取用户 IP 的,而我们的 Web 服务器可能用的是“HTTP_X_FORWARDED_FOR”或者“HTTP_X_REAL_IP”函数来获取 IP,如果不知道怎么办呢,那就两个都试试。
以宝塔为例,我这里可以直接看一下反代服务器的 Nginx 用的是啥。
上图我们可以看到用的是“X_FORWARDED_FOR”函数
所以我们直接用“HTTP_X_FORWARDED_FOR”来替换“REMOTE_ADDR”即可。
首先我们用的一段代码来修改进我们的 wp-config.php 文件里面,这个文件就在我们 WordPress 根目录下。
/** 修正启用CDN后IP识别不正确的问题 */
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];}
把上面代码添加到最底部,或者添加到 <?php 之后都是可以的。
如果这段代码不行,那么你的 CDN 用的可能是“HTTP_X_REAL_IP”函数来获取 IP 的,那我们就要修改成如下添加到 wp-config.php
/** 修正启用CDN后IP识别不正确的问题 */
if(isset($_SERVER['HTTP_X_REAL_IP'])){
$list = explode(',',$_SERVER['HTTP_X_REAL_IP']);
$_SERVER['REMOTE_ADDR'] = $list[0];}
好了,修改完之后,IP 获取就变成正常了。
我又成功水了一篇文章。
水的不错!