惯例性滴先Google了一下,发现了这篇文章
- How do I restore original visitor IP with Nginx? – Cloudflare Support
- Module ngx_http_realip_module - Nginx
看起来挺简单的嘛,在nginx配置文件中加一段地址说明就好了的事。。
然而在重启时却发现,报错了。。。。。新添加的”set_real_ip_from”没有被认出来,导致新配置的文件不被认可就没能重启。。
于是认真的看了下说明。
This module is not built by default, it should be enabled with the –with-http_realip_module configuration parameter.
原来如此嘛,是当初安装的时候没有安装所需要的模块呀~
那就开始在已经配置好的nginx上添加未编译安装模块吧。
使用 lnmp.org 提供的一件包可以编辑lnmp.conf文件,添加nginx编译属性,然后使用upgrade.sh来无人值守升级避免下述问题。
1、看下编译安装nginx的时候,都编译安装的哪些模块。执行命令:/usr/local/nginx/sbin/nginx -V
,得到一下信息
1 | [root@WiseImpressionable-VM src]# /usr/local/nginx/sbin/nginx -V |
2、进入到nginx的安装目录,(这里吐槽下Virmach,果真是垃圾VPS提供商。母鸡的IPv6服务坏了快一个月都没能好)。我这里用的是当初我安装lnmp时候留下来的安装包。如果没有的话,可以用wget的方法从nginx官网上重新得到安装包。
1 | cd /root/lnmp1.3-full/src |
3、重新./configure ,添加所需要的模块后使用make编译。格式应该是这样的:”./configure “ + 第一步得到的configure arguments信息 + 你想要添加的模块。
1 | [root@WiseImpressionable-VM nginx-1.10.0]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-http_realip_module |
千万要注意:到这里就可以了,千万不要make install,不然文件就会被覆盖了。
4、备份原先配置,杀掉nginx进程,然后替换nginx二进制文件
1 | [root@WiseImpressionable-VM nginx-1.10.0]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak |
5、更改站点的nginx配置文件,在location / {} 中加入第一篇文章中提到的信息
1 | location / { |
6、重启nginx服务
1 | lnmp nginx restart |
我这里用的是lnmp带的命令,你还可以使用下面的命令来重启并检查nginx运行情况
1 | [root@WiseImpressionable-VM nginx-1.10.0]# /usr/local/nginx/sbin/nginx |
2018.01.01 更
7、自动更新 cloudflare-real-ip 清单
如果你是使用lnmp.org提供的一键包来安装的,请参照进行。
在nginx配置目录创建cloudflare_ip.conf文件touch /usr/local/nginx/conf/cloudflare_ip.conf
修改原有的vhost配置,将原来第五步配置的信息改为include cloudflare_ip.conf;
创建自更新脚本update_cloudflare_ip.sh(假定该文件放在 /root 目录下),内容如下:
1 |
|
配置crontab
0 5 * * 1 /bin/bash /root/update_cloudflare_ip.sh
↑ 每周一的上午5点更新
作者:Rhilip
链接:https://blog.rhilip.info/archives/256/
来源:https://blog.rhilip.info/