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访问网站。

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
15天前
|
缓存 前端开发 JavaScript
阿里云CDN:怎么让网站变快
阿里云CDN:怎么让网站变快
|
2月前
|
安全 CDN
阿里云CDN产品解读及全站加速在游戏行业的最佳实践!
阿里云CDN(内容分发网络)为全球用户提供快速、稳定、安全的内容分发加速服务,显著提升访问响应速度和成功率
|
17天前
|
网络协议 CDN
阿里云国际版CDN加速,如何判断网站IP已加速?
阿里云国际版CDN加速,如何判断网站IP已加速?
|
17天前
|
存储 网络协议 安全
阿里云国际CDN加速图文和视频类网站操作教程
阿里云国际CDN加速图文和视频类网站操作教程
|
17天前
|
缓存 网络安全 数据安全/隐私保护
使用阿里云国际CDN加速后网站无法访问的排查步骤
使用阿里云国际CDN加速后网站无法访问的排查步骤
|
3月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
3月前
|
应用服务中间件 持续交付 nginx
[nginx]借助nginx实现自动获取本机IP
[nginx]借助nginx实现自动获取本机IP
|
3月前
|
应用服务中间件 nginx 数据安全/隐私保护
nginx配置源IP访问控制
nginx配置源IP访问控制
|
4月前
|
缓存 监控 前端开发
利用CDN提升网站性能的技术探索
【7月更文挑战第8天】CDN作为提升网站性能的重要工具,已经广泛应用于各类网站中。通过减少延迟、加速静态资源加载、提高网站可用性和优化带宽成本等方面,CDN为网站运营者提供了全面的性能优化方案。然而,要充分利用CDN的优势,还需要合理选择CDN提供商、正确配置CDN服务以及持续优化网站内容。只有这样,才能真正实现网站性能的提升和用户体验的优化。
|
5月前
|
Java 应用服务中间件 API
springboot+nginx获取真实IP
springboot+nginx获取真实IP