CDN加速下通过nginx获取网站访客真实IP

简介:

zsip001
一:安装realip模块
nginx -V看看有没有安装,没有就单独编译安装下,有就直接修改nginx的配置即可。
如果没有,就进nginx文件夹去编译: —with–http_realip_module

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-openssl=/root/lnmp1.4/src/openssl-1.0.2l --with-http_geoip_module --with-http_realip_module  
#就是加上--with-http_realip_module
make && make install
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -QUIT `cat /usr/local/nginx/logs/ nginx.pid.oldbin`
#改日志

然后nginx -V检测下有没有安装好。

二、修改nginx.conf配置文件
1:在http区域增加:

log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" ' 
                    '$status $body_bytes_sent "$http_referer" ' 
                   '"$http_user_agent" ';

主要就是增加x-forwarded-for字段,如果没有上面这一段,就自己把这个复制进去也行。
2:在server区域增加:

  set_real_ip_from CDNip1.0/24;  #整个IP段
  set_real_ip_from 源站ip;
  set_real_ip_from 127.0.0.1; #服务器本地
  real_ip_header    X-Forwarded-For;
  real_ip_recursive on;

set_real_ip_from获取ip地址,real_ip_header就是从header头检索ip,real_ip_recursive on获取ip,然后开始排除上面的ip,就显示出剩下的ip。
以上方法,有个不好的事情,就是CDNIP太多了,如果不能直接拿到,就得一次次的检测出ip来加上去。
还有一种方法:
1:在http区域增加:
log_format 域名 '$remote_addr - $remote_user [$time_local] $request'

            '$status $body_bytes_sent "$http_referer" '
            '"$http_user_agent" "$http_x_forwarded_for"';

access_log /usr/local/nginx/logs/域名 域名; 日志

其实也算是通过http_x_forwarded_for来获取,只是读取的时候不一样。
因为后端真实服务器通过http_x_forwarded_for来获取,默认第一个不为unkown的ip就是访客的真实ip。
在server区域其实不用管了,默认配置的nginx.conf文件都有的。
第二种方法呢,就需要修改网站本身程序了,修改程序去读取第一个ip就行。
如果是不能修改网站本身程序,就还是用第一种方法吧。
三、测试访客ip
如果以上两种方法都用上了,可以写个php文件

<!--?php 
echo $_SERVER['REMOTE_ADDR'];  //通过读取real_ip_recursive来查看ip
echo "&lt;br ?-->";
echo $_SERVER["HTTP_X_FORWARDED_FOR"];  //通过读取HTTP_X_FORWARDED_FOR来查看ip
?&gt;   

real_ip_recursive只会获取到当前的一个ip,HTTP_X_FORWARDED_FOR一般会读取到2个ip,第一个是真是ip,第二个是CDNip。

通过以上方法排除CDNip之后,我们就可以统计真实访客的ip了,当然也可以通过这个结合GeoIP模块屏蔽部分地区的ip访问网站。

目录
相关文章
|
2月前
|
域名解析 网络协议 CDN
怎么使用CDN给你的网站加速?
本文介绍阿里云CDN开通与配置全流程:先开通服务,添加加速域名并设置源站信息,再通过CNAME解析绑定域名。完成配置后,通过ping命令验证CNAME生效情况,实现网站加速。
|
2月前
|
缓存 编解码 弹性计算
使用阿里云CDN与传统网站有什么区别?
阿里云CDN通过全球缓存节点与负载均衡技术,实现用户就近访问,大幅提升网站响应速度,解决网络拥堵问题。相比传统直连源站,CDN将静态资源分发至边缘节点,结合OSS、ECS等服务,广泛应用于网站加速、视音频点播、直播及移动APP内容分发,显著优化用户体验。
|
2月前
|
缓存 监控 安全
提升网站性能的10个CDN配置优化技巧
本文深入解析CDN选型、缓存策略、HTTPS加速、动态内容分发等十大优化方案,涵盖节点覆盖、协议支持、安全防护、边缘计算与多CDN架构设计,助力技术团队提升加载速度40%-60%,降低带宽成本30%-50%,实现持续高性能交付。
487 2
|
7月前
|
缓存 边缘计算 网络协议
CDN加速网站的终极指南:关键策略与实战技巧
内容分发网络(CDN)是现代互联网基础设施的核心,通过全球分布式服务器网络加速内容交付。掌握CDN原理与实践,可显著提升网站速度、安全性和用户体验。本文详解CDN基础、优势、实施步骤及未来趋势,帮助您选择合适方案并优化配置,在数字时代中占据竞争优势。无论是高流量网站还是跨国企业,CDN都是不可或缺的技术工具。立即行动,让您的内容交付更高效!
|
3月前
|
缓存 边缘计算 网络协议
如何使用CDN加速给网站加速?
阿里云CDN是基于全球3200+节点构建的分布式网络,能有效分担源站压力,加速网站内容分发,提升访问速度。支持全球覆盖,提供高带宽输出能力,适用于各类静态及动态内容加速。
如何使用CDN加速给网站加速?
|
6月前
|
存储 应用服务中间件 nginx
在使用Nginx之后,如何在web应用中获取用户IP以及相关原理
但总的来说,通过理解网络通信的基础知识,了解http协议以及nginx的工作方式,我们已经能在大多数情况下准确地获取用户的真实IP地址了,在调试问题或者记录日志时会起到很大的帮助。
345 37
|
10月前
|
安全 网络协议 网络安全
如何免费使用锐安盾实现网站CDN加速与安全防护(2025版)
锐安盾是专为中小型网站设计的高性价比高防CDN,提供CDN加速、DDoS/CC防护及常见WEB攻击防护,适合个人站长、中小企业、国企和政府官网。基础版可免费使用一年,配置简单快捷,支持一键开启。基于天翼云平台,拥有2000+节点,确保稳定加速。国内运营需ICP备案,超流量可升级套餐,无额外费用。
如何免费使用锐安盾实现网站CDN加速与安全防护(2025版)
|
11月前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
1118 13
|
11月前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
999 3
|
缓存 前端开发 JavaScript
阿里云CDN:怎么让网站变快
阿里云CDN:怎么让网站变快
下一篇
oss云网关配置