新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 站长技术 > 服务器

nginx使用set_real_ip_from获取用户真实IP

时间:2019-08-12 15:32:55  来源:  作者:
后端<a href=http://www.solves.com.cn/e/tags/?tagname=Nginx target=_blank class=infotextkey>Nginx</a>使用set_real_ip_from获取用户真实IP

 

使用nginx自带模块realip获取用户IP地址

yum或者apt安装的都会默认有这个模块

真实服务器nginx配置

 server {
 listen 80;
 server_name www.qq.com;
 access_log /data/logs/nginx/www.qq.com.access.log main;
 
 index index.php index.html index.html;
 root /data/site/www.qq.com;
 
 location /
 {
 root /data/site/www.qq.com;
 }
 location = /getRealip.php
 {
 set_real_ip_from 192.168.50.0/24;
 set_real_ip_from 61.22.22.22;
 set_real_ip_from 121.207.33.33;
 set_real_ip_from 127.0.0.1;
 real_ip_header X-Forwarded-For;
 real_ip_recursive on;
 fastcgi_pass unix:/var/run/phpfpm.sock;
 fastcgi_index index.php;
 include fastcgi.conf;
 }
 }

getRealip.php内容

 <?php
 $ip = $_SERVER['REMOTE_ADDR'];
 echo $ip; 
 ?>

访问www.qq.com/getRealip.php,返回:

 120.22.11.11
 

如果注释 real_ip_recursive on或者 real_ip_recursive off

访问www.qq.com/getRealip.php,返回:

121.207.33.33

很不幸,获取到了中继的IP,real_ip_recursive的效果看明白了吧.

  • set_real_ip_from:真实服务器上一级代理的IP地址或者IP段,可以写多行
  • real_ip_header:从哪个header头检索出要的IP地址
  • real_ip_recursive:递归排除IP地址,ip串从右到左开始排除set_real_ip_from里面出现的IP,如果出现了未出现这些ip段的IP,那么这个IP将被认为是用户的IP。例如我这边的例子,真实服务器获取到的IP地址串如下:
120.22.11.11,61.22.22.22,121.207.33.33,192.168.50.121
 

在real_ip_recursive on的情况下

61.22.22.22,121.207.33.33,192.168.50.121都出现在set_real_ip_from中,仅仅120.22.11.11没出现,那么他就被认为是用户的ip地址,并且赋值到remote_addr变量

在real_ip_recursive off或者不设置的情况下

192.168.50.121出现在set_real_ip_from中,排除掉,接下来的ip地址便认为是用户的ip地址

如果仅仅如下配置:

 set_real_ip_from 192.168.50.0/24;
 set_real_ip_from 127.0.0.1;
 real_ip_header X-Forwarded-For;
 real_ip_recursive on;

访问结果如下:

 121.207.33.33

总结:real_ip_recursive on 这个参数一定要打开才能获取到真实用户ip



Tags:nginx 真实IP   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
使用nginx自带模块realip获取用户IP地址yum或者apt安装的都会默认有这个模块真实服务器nginx配置 server { listen 80; server_name www.qq.com; access_log /data/logs/ng...【详细内容】
2019-08-12   nginx 真实IP  点击:(0)  评论:(0)  加入收藏
推荐资讯
相关文章
栏目更新
栏目热门