nginx使用CDN后获取用户真实IP的方法

老刘前两天弄了个racknerd的便宜的vps,准备把一个网站放到这个vps上,再顺便把篱落的这台VPS好好的整理一下,当时装系统的时候装的是centos8,可惜这个系统明年官方就不再支持了,所以,长痛不如短痛,早晚都要换系统,不如早换。于是先把博客也迁到了这个rn的空间里。顺便又给加了个CF的套,加上之后,加的时候是扫了几个本地延迟最低的IP,直接分联通、移动、电信把这几个ip分别解析了。经过这么几天的试用,老刘觉得加了CF的速度还算差强人意。准备一直用下去。

但是加了CDN后,有一个问题,那就是不管日志里还是wordpress后台的评论里的IP都是cf的IP,无法获取用户的真实IP,这对管理网站有点麻烦,比如受到攻击或者想封一些发垃圾邮件IP的地址的时候,就没有办法。老刘记得以前看过这方面的文章。于是找了一下,把经过记录下来。

阿帕奇老刘好久没有用过了,这里只说nginx的方面,从网上的教程来看,可以分成两种。老刘把两种方法的说说

一、利用ngx_http_realip_module模块获取用户真实IP

由于老刘用的是oneinstack一键安装包,所以之说这个方法,lnmp一键安装包也可以用类似的方面来搞定。宝塔面板的话,就很简单,装那款免费的防火墙,里面就是cdn的设置,设置完了之后就OK了,不得不说还是可视化面板方便。好了,闲话少说,正式开始。

首先通过nginx -V我们发现默认编译的nginx并不会安装ngx_http_realip_module模块,我们需要重新编译nginx使其载入这个功能模块。

这里我们直接利用oneinstack的升级脚本来完成,这样做,一是很简单,二是一般不会出错,很适合初学者使用,第三,就是以后你升级nginx的话,也能一劳永逸。

#增量添加参数到${nginx_configure_args}后面
vim /root/oneinstack/include/upgrade_web.sh
#在${nginx_configure_args}后面增加--with-http_realip_module即可
#大致位于升级脚本的第57行

保存并退出,执行oneinstack的升级脚本/root/oneinstack/upgrade.sh进行nginx升级编译即可。

最后执行nginx -V查看最终编译后的结果。

Nginx设置set_real_ip_from

编译好了ngx_http_realip_module,现在我们只需要在Nginx配置文件中添加set_real_ip_from代码到nginx.conf文件的http段落里面,老刘用的cf的,用期待的CDN类似,只有知道IP段可以了。示例如下:

set_real_ip_from 103.21.244.0/22;
 set_real_ip_from 103.22.200.0/22;
 set_real_ip_from 103.31.4.0/22;
 set_real_ip_from 104.16.0.0/12;
 set_real_ip_from 108.162.192.0/18;
 set_real_ip_from 131.0.72.0/22;
 set_real_ip_from 141.101.64.0/18;
 set_real_ip_from 162.158.0.0/15;
 set_real_ip_from 172.64.0.0/13;
 set_real_ip_from 173.245.48.0/20;
 set_real_ip_from 188.114.96.0/20;
 set_real_ip_from 190.93.240.0/20;
 set_real_ip_from 197.234.240.0/22;
 set_real_ip_from 198.41.128.0/17;
 set_real_ip_from 199.27.128.0/21;
 set_real_ip_from 2400:cb00::/32;
 set_real_ip_from 2606:4700::/32;
 set_real_ip_from 2803:f800::/32;
 set_real_ip_from 2405:b500::/32;
 set_real_ip_from 2405:8100::/32;
 set_real_ip_from 2c0f:f248::/32;
 set_real_ip_from 2a06:98c0::/29;
 real_ip_header  X-Forwarded-For;
 real_ip_recursive on;

配置完成后,使用nginx -t检查配置文件是否存在格式问题。如果没有报错执行service nginx reload重载nginx服务即可。

然后访问网站,再次查看nginx日志,就可以正常获取到用户真实IP了。

二、利用nginx的日期格式来达到目的

首先,将下面的代码添加到nginx.conf文件的http{后面让日志重置化:

#自定义一个日志格式
log_format cdn '$http_x_forwarded_for - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

然后,我们修改nginx站点原来的日志输出格式,修改access_log /home/wwwlogs/xxxx.log; 为access_log /home/wwwlogs/xxxx.log cdn;全部保存之后不要急着重启nginx,再次强调一个命令nginx -t,用于检查nginx配置文件是否存在错误。这是一个非常实用的命令,可以让你在业务运行的同时从起nginx服务,不至于造成业务中断或者业务停止。

这个方法的有点是不需要编译nginx,设置完了之后也是一劳永逸。但是对于oneinstack一键安装包来说,因为它已经重置了日志的格式,所以就不适用了。

小结

以上就是两种在使用CDN后可以获取用户真实IP的方法,可以根据自己的情况来使用。

Read more

小米SU7又出事了,我们到底该怪谁?

小米SU7又出事了,我们到底该怪谁?

6月11日晚上,郑州街头,一辆小米SU7失控连撞十几辆车——电动车、小轿车都没躲过,车头几乎报废,现场一度混乱不堪。更早之前,安徽那起SU7高速起火致三人死亡的事故也还没从大家脑海中淡去。 姑且不说到底是不是智能驾驶的原因, 也有很多它的粉丝说比亚迪出事多少多少,归根到底还都是电车的问题,那么电车怎么老出事? 是车太猛?人太嫩?还是对“智能驾驶”理解太美好? 动力太猛,新手真心顶不住 先说车。SU7有多猛?顶配版零百加速2秒多,马力直接干到1000匹以上,这种性能放在燃油车里,那就是超跑级别。 但问题是,买它的大多是年轻人,很多是人生第一辆车,甚至有的刚拿驾照没多久。这种“猛兽”配“新司机”的组合,说实话,确实危险系数高。一脚电门下去,车先冲出去了,人还没反应过来。 郑州这次的女司机,就是刚提车不久。车一失控,根本刹不住。不是她不会开,而是这车给新手的容错空间实在太小了。 智能驾驶不是“放手驾驶” 再说智能驾驶。小米宣传的NOA、

By 老刘
站在新高考的起点:对两年后女儿的期许

站在新高考的起点:对两年后女儿的期许

2025年的高考今天落幕,这是“3+1+2”模式全面实施的第一年。从改革到首考,从认知到实践,这不仅是对学生能力的测量,更是一种教育方向的宣示。 作为家长,我对这次高考有三点深刻感受: 一、语文卷:不再“刷题”,更考“立志与思辨” 今年全国卷一作文聚焦“民族魂”,从老舍、艾青、穆旦的文字中引导学生理解爱国情怀的不同方式 。考题不仅强调情感共鸣,也要求结构逻辑清晰,表达真诚、语言自然流畅 。 这道作文开放而不空洞:任何有生活、有思考的学生,都能找到表达路径;但能够精准逻辑、有独立见解,并融入素材,便是真高分。 这使我明白,真正的语文能力,不在于套路,而在于“你是谁”——有温度、有思想、有立场。 二、历史题:文言与史料,强调跨学科理解 今年历史全国卷大量使用文言史料,并引导学生依据不同角度进行对比、评析与判断

By 老刘
荔枝路远,道在人心——从《易经》看李善德的一生

荔枝路远,道在人心——从《易经》看李善德的一生

马伯庸的小说《长安的荔枝》及其改编剧集,看似讲述一场跨越千里的荔枝运输奇旅,实则以小人物的遭遇折射盛唐末期政治、社会、文化的真实图景。主人公李善德,这位从九品小吏,在完成“运荔枝”这一看似荒诞实则关乎权力的任务中,演绎出一部小人物在大时代中如何“知命”、“尽性”、“归真”的命运史。 本文尝试以《易经》的视角,借其卦象与哲思,还原李善德的命运轨迹与精神转化。 一、《屯卦》:困中求进,命运起始 卦辞:“屯,元亨,利贞。勿用有攸往。利建侯。” “屯”象征万物初生,动荡未定。李善德身为地方文吏,无权无势,却在极为不利的局势中被委以“千里送荔枝”之命——这是危也是机。他组建了一支临时小队,历经风雨山川、盗贼瘴气,表面是传荔枝,实则是在夹缝中求生存。这正是“屯”卦中的“利建侯”

By 老刘
蒙卦:从困中启,向光而行

蒙卦:从困中启,向光而行

如果你在街头做一个采访,问:“《易经》是什么?” 十有八九会有人回答:“算卦的书呗。” 这个答案,其实对,也不全对。 《易经》确实起源于卜筮之术,但它远远超越了“算卦”本身。它是一种看待变化的哲学,是中华文化思维的源代码,是一部人生操作手册。在我们日常生活中,家庭、工作、人际、选择,每个节点的应对,都可以在《易经》中找到线索。 昨天读南怀瑾先生对蒙卦的讲解,颇有感触。他说:蒙卦,其实就是屯卦翻转过来的样子。 * 屯卦(第三卦):☵上坎下震☳ —— 水雷屯。 * 蒙卦(第四卦):☶上艮下坎☵ —— 山水蒙。 我们平常说“启蒙”,正是从这个卦象来的。 屯是磨难,蒙是顿悟 屯,是开始阶段的艰难,万事起头难。 蒙,是经过困顿后,开始有“

By 老刘