搭建好环境网站完全正式上线之后,在网站使用Cloudflare CDN时无意间发现访问者的所有IP都是Cloudflare的IP地址,无奈网站已经上线了,不可能又要重新编译安装环境,麻烦还浪费时间,去Cloudflare官网帮助文档看了看有了大概的解决思路,Nginx 需要启用http_realip_module目录,编译的时候加上 --with-http_realip_module参数.
Nginx编译 --with-http_realip_module模块:
本人所使用的环境为LNMP1.4,查看了Nginx版本之后决定不升级只在当前nginx版本中重新进行编译添加--with-http_realip_module模块。
进入lnmp1.4安装包,编辑lnmp.conf文件,在Nginx_Modules_Arguments 的''里加上--with-http_realip_module然后退出保存,执行命令upgrade.sh nginx 输入您当前nginx版本号然后自动升级。
备份下原来老的nginx文件:
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
测试新的nginx程序是否正确:
/usr/local/nginx/sbin/nginx -t
如果不成功或者网站访问失败,重启服务器之后执行恢复旧nginx文件命令(此命令不影响你所编译的新模块):
mv /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx
测试nginx是否正确,如正确请重启nginx服务:/etc/init.d/nginx reload
查看ngixn版本极其编译参数:
/usr/local/nginx/sbin/nginx -V
就会出现您新添加的--with-http_realip_module模块。
添加模块成功之后还要进行下面的Nginx配置.
在Nginx配置http下方添加以下代码:
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 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 CF-Connecting-IP;
保存退出之后测试新的nginx配置是否正确:
/usr/local/nginx/sbin/nginx -t
返回OK之后重启nginx服务:/etc/init.d/nginx reload
完成。
如果CloudFlare节点ip变更,大家可以去下面地址获取最新的节点ip.
https://www.cloudflare.com/ips
之后就可以看到访问者的真实IP地址啦,结束。
注:本方法只在军哥LNMP1.4环境配置有效,其他NGINX环境都一样,只是目录不一样而已。
如果您想重新编译安装生产环境,可参考军哥所写的方法:https://sep.cc/go/nginx/
大佬厉害!学习学习
博主 麻烦发我邮件,你买的国外服务器 和 域名地址给我一下。我也去弄个。不用备案