如果宝塔面板建站之后,给站点挂上cf cdn,那么日志中获取的IP都是cloudflare的代理IP。如何获取真实的用户IP呢,本文提供两种方法。
1、代码
可以在nginx设置中添加2行代码来获得用户的真实访问IP,代码如下:[reply]
set_real_ip_from 0.0.0.0/0; #保留为0表示获取全网段IP real_ip_header X-Forwarded-For; #heade报头信息
[/reply]
1.1如何放置呢?
如何放置代码,我们如果使用的是宝塔nginx版本,那么可以在“软件管理”→“运行环境”→“Nginx”打开配置文件在http{ }后加入上述代码即可,如图:
1.2注意:
这里介绍的是宝塔面板的nginx设置,如果是其他lnmp的环境,可以根据自己的环境找到nginx.conf。
- 宝塔
Nginx的配置文件位置:/www/server/nginx/conf/nginx.conf 一般lnmp的Nginx的配置文件位置:/usr/local/nginx/conf/nginx.conf
2、防火墙设置
用代码的方法,可能兼容性不太好,所以,我们还可以轻松愉快的用宝塔面板自带的免费防火墙来设置以获取真实的用户IP。
2.1安装免费版本防火墙
这个以前讲过的,可以看文章“宝塔面板第三方应用 – Nginx免费防火墙的试用教程”。安装好之后,还需要简单的设置,看下面。
2.2开启使用CDN
开启的步骤,打开防火墙之后:“站点配置”→“设置”→“使用CDN”点击使用即可。如图:
这样启用之后,即可获取用户真实的访问IP。
3、效果测试
查看自己的网站日志,宝塔面板的网站日志路径:“/www/wwwlogs”。
3.1没使用任何手段之前
3.2使用代码或者防火前开启cdn之后
已经可以获得真实的用户IP了。
4、最后
如果你是专业版的用户,那么可以安装专业版防火墙也是有同样的功能的,如图:
其实免费版用用也足够了。以上方法不仅使用于cloudflare,也适用其他任何cdn商家。比如说,七牛、又拍云、百度云加速等等。



















宝塔用nginx反代后怎样获取真实IP呢?
如果用的 是wordpress可以用这段代码,只需要将下面一段代码加入到wp-config.php文件中即可:
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}
“以上方法不仅使用于cloudflare”,其中使用应改为适用吧?
不仅限于cloudflare吧? 鸟叔!
非常感谢 学习下
果然是大佬!
评论了 怎么还看不到
果然是大佬!
大佬牛?!
看完反代自建CDN无法看真实IP,刚好转过来看这个,很有用
反代的好像用防火墙不行
其实免费防火墙开启获取真实IP就行。
感谢分享
学习一下,谢谢
我擦,这么好的文章居然刚发现
感谢楼主,试试看!
文章横有用 😛
为啥免费版WAF开了CDN还是不行啊,仍然全是CF的IP,难道是我在CF开了FULL SSL的缘故?
其他适用吗
感谢分享!
php如何处理
6666,借鉴学习一下
学习一下
学习学习
学习一下
前排支持
前排支持
学习学习