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

粮票里的父爱

粮票里的父爱

前几天在博客群里闲聊,话题莫名其妙地扯到了粮票。我随口说了一句:“当年我爸把全国的粮票攒着不舍得用,说是为了给我和我哥上大学的时候用。”阿均半开玩笑地说:“整理一下这个故事吧,也挺有意思的。”我心里一动,其实不久前还听我爸抱怨呢:“当年给你们攒的粮票,其实也没怎么用上。” 说到粮票,很多年轻人可能都没见过。上世纪八九十年代,粮食和一些生活用品都是按票供应的。手里有粮票才能买粮,没有就只能干着急。那时候的粮票分两种:地方粮票和全国性粮票。地方粮票只能在本地用,而全国性的粮票可以全国通用,更珍贵。 我爸攒的,就是全国粮票。他考虑到我和我哥上大学,不一定会留在甘肃,怕我们去外地没粮票买粮,饿肚子。他省吃俭用,把这些全国粮票默默积攒起来,为我们未来的温饱留着。想象他每天回家,把一张张小票叠好放进抽屉里,那画面真是朴素又让人心安。 求学的道路上,其实父母一直在鼓励我们。父亲看到单位新分来的大学生待遇非常好,意识到知识和学历的重要性;同时,我们家从祖辈开始都没有什么学问,所以望子成龙的期望特别重。放假的时候,除非是集中性的农活,比如收种庄稼、施肥这些有时效的农活,平常的象除草这些活儿都不让我

By laoliu
物必自腐,而后虫生

物必自腐,而后虫生

前几天朋友送了一箱黄桃,一次性吃不了那么多,慢慢的桃子就有点发软,这两天吃桃子的时候,屡屡遇到外表鲜亮,啃两口发现里面已经变质的桃子。这不由的让我想起了一句忘了从哪里看到的话——“物必自腐,而后虫生”。 查了一下资料,出处应该是苏轼的《范增论》。苏轼借楚汉相争,感叹项羽失天下并非因为范增未被重用,而是因为项羽自己内部的问题。于是写道:“物必先腐也,而后虫生之;人必先疑也,而后谗入之。”意思是,万物的败坏,必然从自身腐烂开始,外来的虫子不过是乘虚而入;人的失败,往往是自己心中先起疑念,外来的谗言才有了可乘之机。桃子如此,世间又何尝不是? 一颗桃子,即便外皮光鲜,若果肉先行腐坏,虫子自然会滋生。虫并不是腐烂的原因,而是腐烂的结果。真正决定一颗桃子命运的,不在于外表多么饱满,而在于内里是否坚实清新。 历史上的王朝也是如此。唐宋明清,无不曾强盛一时,但当内部积弊滋生、腐化蔓延时,再坚固的城池也难以自保。外敌入侵只是导火索,真正的根源是自身的腐朽。 组织亦然。一个团队,如果内部保持团结向上,足以抵御风雨;

By laoliu
茶与菩提:慢下来的时光

茶与菩提:慢下来的时光

周末收拾店内的东西,无意中翻出一个纸袋。打开一看,里面是半块普洱茶饼。这块茶饼是媳妇她表哥送的。刚拿到手时,我兴致勃勃地撬下一点泡来喝。慢慢地,三两次、五六次,一块完整的茶饼就被消耗掉了一半。后来是因为茶壶被摔坏了,改用玻璃杯泡绿茶,也就放在那了。都说普洱茶的妙处,就在于它“越陈越香”。这两年,它是不是也在悄悄发生着变化呢? 茶汤里的岁月 普洱分为生普和熟普。生普茶汤清亮,滋味苦涩中带着一丝清甜,回甘悠长,那是岁月的原味,直接而真切。熟普则是经过人工发酵,褪去了青涩,变得醇厚温润。茶汤红浓明亮,入口顺滑,带着独特的陈香,仿佛一位历尽风霜的长者,沉稳而内敛。我这一块,是熟普。撬下一点,用开水冲泡,茶汤渐渐转为红褐色,透着微微的枣香。轻轻啜一口,醇厚顺滑,温润入喉。这不只是一杯茶,更是一段被遗忘的时光。 菩提的光泽 喝茶的时候,瞥见了柜子里的那一串星月菩提。那是2015年买的,这些年不知不觉间,

By laoliu