深入nginx之《获取用户的真实IP》
获取用户的真实IP
Nginx会将客户端的IP信息存放在$remote_addr变量里,但这并不意味着它就是客户端的IP,生产环境往往会充满各种代理,让IP的来龙去脉变得扑朔迷离。
目前互联网公司基本上都采用这种架构方式:
用户的请求并不是直接和Nginx交互,而是通过了CDN加速平台。默认情况下,Nginx看到的$remote_addr是CDN的IP,这对日志的记录和分析,还有后端的业务逻辑都可能产生不良的影响,如果需要获取到用户的真实IP呢,这个时候realip模块就起到了作用。
此模块需要编译时开启:
--with-http_realip_module
在Nginx的HTTP块里面配置:
set_real_ip_from CDN_IP;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from:
设置哪些IP是可信任的,从这些IP进行获取请求头信息,这些IP就配置为CDN的IP白名单。
real_ip_header:
定义从哪个请求头获取IP信息,其值将用于替换客户端地址。一般都使用X-Forwarded-For。
real_ip_recursive:
如果启用递归搜索,将会对可信任的IP匹配,原始客户端地址将替换为在请求头域中发送的最后一个不可信地址。如果禁用递归搜索,则从白名单中由real_ip_header指令定义的请求头中的最后一个地址替换。
通过此方式就可以获取到CDN传递给Nginx的用户的IP。那么问题来了,$remote_addr被替换成了用户的IP,有些时候我们也希望获取到CDN 的节点IP,这对于排查一些和CDN有关的问题是由帮助的。可以使用$realip_remote_addr,它可以保留原始客户端地址。 (1.9.7版本新增的变量)
深入nginx之《获取用户的真实IP》的更多相关文章
- 深入Nginx之《常用参数配置技巧》
常见参配置实战技巧 下面会讲解实战中应该怎么配置更为合理. 1.user 默认是nobody,如果使用nobody,Nginx在运行过程中会出现很多操作没有权限,比如写硬盘.一般都是用低于root级别 ...
- Production环境中iptables常用参数配置
production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...
- Nginx代理常用参数
目录 一:Nginx代理常用参数 1.添加发往后端服务器的请求头信息 二:参数案例 1.lb01配置文件 2.web01 web02 web服务器 3.测试 4.重启 5.DNS域名解析 6.网址测试 ...
- [效果不错] nginx 高并发参数配置及linux内核参数优化,完整的内核优化设置。PHP-FPM高负载解决办法。
背景:对vps小资源的实践中对,https://justwinit.cn/post/7536/ 的再优化,再实践,再优化,特别是Nginx,PHP,内核: 零)Nginx: error_log /da ...
- Weblogic内存溢出及常用参数配置
http://www.360doc.com/content/14/0306/14/16134804_358216319.shtml 一.WebLogic内存溢出 最近访问量门户访问量突然增大, ...
- Nginx之常用基本配置(三)
前面我们聊了下了Nginx作为WEB服务器对客户端请求相关配置,文件操作优化.Nginx访问控制.basic验证,.状态模块状态页.gzip压缩配置:回顾请参考https://www.cnblogs. ...
- Nginx基础 - 常用模块配置
1.Nginx状态监控http_stub_status_module记录Nginx客户端基本访问状态信息 location /mystatus { stub_status on; access_log ...
- [Hive_add_8] Hive 常用参数配置
0. 说明 记录 Hive 常用参数的配置 1. 设置本地模式 让 Hive 自动使用 Hadoop 的本地模式运行作业,提升处理性能 适合小文件,一般用于测试 set hive.exec.mode. ...
- logback 常用参数配置详解
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- Nginx之常用基本配置
上一篇博客我们大概介绍了一下nginx,nginx的架构,nginx编译安装和nginx命令的用法,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/1236680 ...
随机推荐
- 配置/更改vue项目中的资源路径
打开 build/webpack.base.conf.js ,在module.exports .resolve.alias下自定义: alias: { 'vue$': 'vue/dist/vue.e ...
- redux的知名ppt
https://slides.com/jenyaterpil/redux-from-twitter-hype-to-production#/20
- 第3章 Spring AOP
3.1 Spring AOP简介 3.11什么是AOP? AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程).它是面向对象编程(OOP)的一种补充 ...
- python-随机生成验证码实例
需求:随机生成验证码, 思路: 1.生成一个随机数,65-90 2.数字转化为字母:chr(数字) #!/usr/bin/env python # -*- coding:utf-8 -*- impor ...
- presto-gateway 试用以及docker 镜像制作
presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决 还有就是docker 镜像的制作 Dockerfile 很简单,本地构建然后 ...
- PHP常用的魔术方法及规则
1. __construct 具有构造函数的类会在每次创建新对象时先调用此方法;初始化工作执行.2. __desstruct 对象的所有引用都被删除或者当对象被显式销毁时执行.3.__call()在对 ...
- vscode中配置C#环境
安装.Net Core SDK 如果已经安装了SDK的话则可以跳过这一步,不然需要安装SDK在进行环境配置:下载链接.NET CORE SDK下载: SDK安装完之后,软件执行界面如下所示 在vsco ...
- 【UVA1057】Routing
[UVA1057]Routing 题面 洛谷 题解 有一个比较好想的dp就是\(f_{i,j}\)表示第一个点在\(i\),第二个点在\(j\)的最小点数,但是直接搞不好转移. 考虑建出反图,那么\( ...
- 小程序支持原生async方法
下载最新版本的微信开发工具,社区链接https://developers.weixin.qq.com/community/develop/doc/00066877c54eb0ff5488b54885b ...
- 使用electron开发桌面级小程序自动部署系统
那一天我二十一岁,在我一生的黄金时代,我有好多奢望.我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样. ...