
原文网址Nginx--使用CDN后拉黑客户端真实IP-CSDN博客简介本文介绍Nginx使用CDN后拉黑客户端真实IP。不使用CDN时拉黑IP的方法见Nginx--拉黑IP-CSDN博客若使用了CDN来源IP总是CDN的IP无法用拉黑IP的方式限制用户IP访问。本文即介绍使用了CDN后如何拉黑用户真实IP。1.取出用户真实IP1、在 Nginx 的 http 模块内加入如下配置$clientRealIP 就是用户真实 IP 了# 获取用户真实IP并赋值给变量$clientRealIP map $http_x_forwarded_for $clientRealIp { $remote_addr; ~^(?PfirstAddr[0-9\.]),?.*$ $firstAddr; }代码含义如果没用CDN那就取$remote_addr连接的IP地址若用了CDN则取 $http_x_forwarded_for 的第一个值详解当一个 CDN 把用户的请求转到后面服务器时CDN 会在 Http 的头中加入一个记录X-Forwarded-For : 用户 IP, 代理服务器 IP。如果中间经历了不止一个代理服务器这个记录会是这样X-Forwarded-For : 用户 IP, 代理服务器 1-IP, 代理服务器 2-IP, 代理服务器 3-IP, ….用户的真实 IP 在第一个位置 后面会跟一串中间代理服务器的 IP 地址。2. 写限制访问代码判断 $clientRealIP实现限制访问。新建ipblack.conf文件文件名任意内容如下#如果真实IP为 100.100.100.100或222.222.222.222那么返回403 if ($clientRealIp ~* 100.100.100.100|222.222.222.222) { return 403; break; #如果你的nginx安装了echo模块还能如下输出内容(不兼容返回403,可以用200吧) #add_header Content-Type text/plain; #echo Too frequently; }我把这个上传到 Nginx 的 conf/conf.d 文件夹3.启用限制代码在想启用的网站的server 模块中引入这个配置文件server { include conf.d/ipblack.conf; # 其他配置 }4.重新加载Nginx配置见此文最后Docker Compose--安装Nginx--方法/实例-CSDN博客