[root@aliyun cnyunwei]# nginx -Vnginx version: nginx/1.10.1built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) built with OpenSSL 1.0.2h 3 May 2016 TLS SNI support enabled configure arguments: --prefix=XXXXXX --with-http_realip_module XXXXXX
默认是不安装该模块的,以是如果检测出来没有这个模块就须要重新编译了,重新编译也非常方便,纵然是线上不能停机当然也可以编译,平滑升级即可。
进入nginx 源码安装包目录下configure 的参数就和原来保持一样,只是增加一个--with-http_realip_module 例如:--prefix=/usr/local/nginx --with-http_stub_status_module --with-http_realip_modulemake && make install 至于平滑升级,可直接实行 killall -s USR2 nginx
接下来是编辑对应的配置文件设置
location 中加入以下信息:set_real_ip_from 222.222.222.222; #这里是须要填写详细的CDN做事器IP地址real_ip_header X-Forwarded-For;real_ip_recursive on;

写一个测试页面来检测读取的访问IP地址是否已经获取到了用户IP地址 vim ip.php
< ?php echo \"大众Welcome cnyunwei.cc !\"大众; echo 'server_addr : '; echo $_SERVER['SERVER_ADDR']; echo 'remote_addr : '; echo $_SERVER['REMOTE_ADDR']; echo 'host : '; echo $_SERVER['HTTP_HOST']; ?>
下面即可直接访问测试,remote_addr 是否为你当前的公网IP地址,然后修合法地电脑hosts 重定向到CDN做事器再测试验证IP地址是否精确读取,如果精确的情形访问日志中也会精确显示对应的来访IP地址而不是CDN做事器的地址。