CDN 环境下获取用户IP方法
2024-08-31 02:00:53
CDN 环境下获取用户IP方法
1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得
proxy_set_header X-Real-IP $remote_addr
这种方法简单有效准确.
2 cdn一般都会使用自定义字段X-Forwarded-For记录代理过程信息
例如: 假设加上cdn代理在内的所有代理后的$http_x_forwarded_for为:
192.168.247.1, 192.168.247.131, 192.168.247.132,192.168.96.111
我们可以拿到第一个IP即可(这里不考虑IP伪造的情况)
3 使用nginx自带模块realip获取用户IP地址
如果nginx是通过源码包安装的,在编译时需要加上
--with-http_realip_module
在最后一台代理服务器(nginx)做如下设置:
real_ip_header "X-Forwarded-For"; 设定获取ip地址串的字段
real_ip_recursive on; 递归check地址串
set_real_ip_from 192.168.247.131; 在check地址串的过程中pass掉它
set_real_ip_from 192.168.247.132; 在check地址串的过程中pass掉它
set_real_ip_from 192.168.96.111; 在check地址串的过程中pass掉它
这个例子中只有192.168.247.1没有在set_real_ip_from中那我们就默认它是用户IP
缺点:ip地址有可能被伪装,而且需要知道所有CDN(代理)节点的ip地址或者ip段
最新文章
- CSS备忘录
- Daily Build
- ural 1143. Electric Path
- eclipse闪退
- Vijos1889 天真的因数分解
- Redis学习手册(Sorted-Sets数据类型)
- 十天学会单片机Day5 IIC总线AT2402芯片(EEPROM)应用
- 修改UI中的值,无反应解决办法
- MyBatis(3.2.3) - Passing multiple input parameters
- Android完全退出应用程序,完美解决方案
- maya 写UI 用到的工具
- CUGBACM_Summer_Tranning 组队赛解题报告
- STM8S 串口应用 UART2 STM8S105
- Erlang运行时的错误
- HTTP请求返回状态详解
- Java学习笔记三---unable to launch
- 小程序解析html之富文本插件wxParse
- Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnection
- Python开发——数据结构【深浅拷贝】
- day--16页面布局