首页 运维 网络学院 查看内容

怎样获取CDN上用户真实IP地址

2019-11-27 09:14 |来自: 互联网 1660 0

摘要: 使用nginx -V 查看一下nginx 参数中有没有--with-http_realip_module# 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_re
关键词: 地址 nginx server 27 echo with http module realip 编译

使用nginx -V 查看一下nginx 参数中有没有--with-http_realip_module

[root@aliyun cnyunwei]# nginx -V
nginx version: nginx/1.10.1
built 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_module
make && 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服务器的地址。

本文出处: https://www.toutiao.com/a6752492364670960142/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

最新评论

返回顶部