Site icon 老张博客

WordPress反向代理后,获取不到访客真实IP的解决方法!

文章目录 「隐藏」
  1. 在 1panel 反代配置中添加 Headers
  2. 修改WordPress配置

按目前《目前老张博客服务器搭配方案!》,把老张博客还是搬回了CloudCone。酷鸭数据香港这台VPS,因为线路好配置也高,只放个小博客有点性能过剩了,准备把openclaw安装上去,让我的“小张”搞一些项目!如果手里没有好性能、好线路的机器,酷鸭数据真的是不错的选择!

目前老张博客的服务器搭配是:访客 → 瓦工 Megabox(1panel 反代+WAF) → CloudCone(宝塔+WordPress),也就是在前天,有垃圾评论我准备拉黑IP地址的时候才发现,这个家伙的IP显示是我的瓦工 Megabox地址。出现这样的问题有两种可能,一是瓦工Megabox反代时没有把真实 IP 传递给 CloudCone,二是瓦工Megabox传递了真实IP但是 CloudCone 端的 WordPress 没有正确读取这真实IP。

在 1panel 反代配置中添加 Headers

在瓦工Megabox的 1panel 中,找到你的反向代理配置,添加以下 headers,具体步骤如下,并添加以下代码。注意,检查下,如果代码已存在,就不要再加了!经过检查,1panel的反向代理配置已经很完善了!

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;

 

修改WordPress配置

经过第一步后,发现wordpress还是没有能正确的获取到访客的真实IP。我又检查到我的“老张随笔”是可以正确获取的访客真实IP的。那问题就是出在WordPress的配置上了。打开WordPress根目录下的 wp-config.php,在 <?php 之后第一行添加下面的代码

// 获取真实 IP(反代场景)
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip_list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = trim($ip_list[0]);
} elseif (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}

OK了,至此,WordPress就可以获取到访客的真实IP了!你学废了吗!

 

 

 

 

 

 

Exit mobile version