恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Nginx通过CDN获取真实IP并实现精准封禁配置指南

  • 首页
  • 资讯中心
  • /
  • Nginx通过CDN获取真实IP并实现精准封禁配置指南

相关资讯

5分钟快速上手:BOTW存档编辑器GUI - 塞尔达传说旷野之息终极修改方案 2026/8/11 11:23:21
Navicat Mac版无限试用重置脚本:专业数据库管理工具永久使用完整指南 2026/8/11 11:23:21
Windows苹果设备连接终极方案:3分钟解决iPhone驱动问题 2026/8/11 11:23:21

最新资讯

Windows环境下Tomcat 11/10安装配置与部署实战指南
Apache PLC4X工业物联网协议统一接入指南:跨品牌PLC数据采集实战
Perlego电子书PDF转换技术实现:为数字学习者构建本地阅读解决方案
国家中小学智慧教育平台电子课本下载终极教程:5分钟免费获取PDF教材
【AI大模型进阶】FAISS 入门:Facebook 开源的超强向量检索库
3分钟彻底改变Windows窗口操作:AltSnap让你的工作效率提升300%![特殊字符]

今日推荐

《人工智能导论:深度学习大模型基础》全套PPT课件2026
9.5 技术债务的重构:何时该动一次大手术
如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Nginx通过CDN获取真实IP并实现精准封禁配置指南

发布时间:2026/8/11 11:23:21
Nginx通过CDN获取真实IP并实现精准封禁配置指南 1. 项目背景与核心需求当网站启用CDN服务后所有客户端请求都会先经过CDN节点这使得Nginx日志中记录的IP地址全部变成了CDN服务器的IP。这种场景下传统的deny指令会直接屏蔽CDN节点IP导致所有流量被阻断。我们需要一种机制能够穿透CDN获取真实的客户端IP并基于真实IP实施精准封禁。典型的业务场景包括防御CC攻击时精准封禁攻击源针对恶意爬虫实施IP黑名单限制特定地区的访问权限防止暴力破解等安全威胁2. 核心技术原理解析2.1 HTTP头部传递机制CDN服务商普遍采用X-Forwarded-For(XFF)头部传递原始IP其格式为X-Forwarded-For: 客户端IP, 代理服务器1 IP, 代理服务器2 IP...例如经过多层代理的情况X-Forwarded-For: 203.0.113.45, 198.51.100.22, 192.0.2.672.2 Nginx变量处理逻辑Nginx内置变量说明$remote_addr直接TCP连接的客户端IP即CDN节点IP$http_x_forwarded_for完整的XFF头信息$realip_remote_addrrealip模块解析后的真实IP3. 完整配置方案实现3.1 基础环境准备确认Nginx编译时包含--with-http_realip_modulenginx -V 21 | grep -o with-http_realip_module3.2 核心配置代码http { # 定义可信CDN IP段必须配置 set_real_ip_from 203.0.113.0/24; set_real_ip_from 198.51.100.0/24; # 使用从右向左的解析方式 real_ip_recursive on; real_ip_header X-Forwarded-For; # IP黑名单存储路径 geo $blocked_ip { default 0; include /etc/nginx/conf.d/ip_blacklist.conf; } server { location / { if ($blocked_ip) { return 403; # 或使用更激进的措施 # return 444; } # 正常业务配置... } } }3.3 黑名单管理方案动态更新黑名单的脚本示例#!/bin/bash # 添加IP到黑名单 echo 1.2.3.4 1; /etc/nginx/conf.d/ip_blacklist.conf nginx -t nginx -s reload推荐使用自动化工具管理# 使用fail2ban自动封禁 fail2ban-regex /var/log/nginx/access.log ^HOST.* 403 4. 高级防护策略4.1 多维度防御配置map $http_user_agent $bad_bot { default 0; ~*(AhrefsBot|SemrushBot|MJ12bot) 1; } map $http_referer $bad_referer { default 0; ~*(spam-site.com|fake-traffic.org) 1; } server { if ($bad_bot) { return 403; } if ($bad_referer) { return 403; } }4.2 速率限制配置limit_req_zone $binary_remote_addr zoneapi_limit:10m rate10r/s; location /api/ { limit_req zoneapi_limit burst20 nodelay; # 业务逻辑... }5. 实战问题排查指南5.1 常见错误案例案例1错误配置导致403# 错误示范未设置可信IP段 real_ip_header X-Forwarded-For;案例2IP获取不准确# 需要添加递归解析 real_ip_recursive on;5.2 调试技巧查看真实IP获取情况location /ipinfo { add_header Content-Type text/plain; return 200 Remote: $remote_addr\nRealIP: $realip_remote_addr\nXFF: $http_x_forwarded_for; }日志格式建议log_format main $remote_addr - $realip_remote_addr [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent;6. 性能优化建议使用geoip2模块进行高效IP匹配load_module modules/ngx_http_geoip2_module.so; http { geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb { $geoip2_data_country_code country iso_code; } map $geoip2_data_country_code $allowed_country { default no; CN yes; US yes; } }黑名单IP使用内存存储geo $blocked_ip { ranges; default 0; 192.168.1.0-192.168.1.255 1; }定期清理无效规则# 清理超过30天的封禁IP find /etc/nginx/conf.d/ -name ip_blacklist.conf -mtime 30 -exec sed -i /old_ip/d {} \;7. 企业级扩展方案7.1 动态黑名单APIlocation /api/blacklist { auth_request /auth; allow 10.0.0.0/8; deny all; content_by_lua_block { local redis require resty.redis local red redis:new() red:set_timeout(1000) -- 1 sec local ok, err red:connect(127.0.0.1, 6379) if not ok then ngx.say(failed to connect: , err) return end local res, err red:smembers(ip:blacklist) if not res then ngx.say(failed to get blacklist: , err) return end ngx.say(table.concat(res, \n)) } }7.2 结合WAF联动location / { access_by_lua_file /etc/nginx/lua/waf.lua; # 正常业务配置... }waf.lua示例片段local function is_ip_banned(ip) -- 调用安全API检查 local http require resty.http local httpc http.new() local res, err httpc:request_uri( http://security-api/check, {method GET, query {ip ip}} ) if res and res.status 200 then return res.body true end return false end8. 安全加固建议防止IP欺骗# 限制XFF头部长度 map $http_x_forwarded_for $xff_valid { default $http_x_forwarded_for; ~*^([^,]{1,15})(,[^,]{1,15}){0,4}$ $1; $remote_addr; }关键操作二次验证location /admin { satisfy any; allow 192.168.1.100; deny all; auth_basic Admin Area; auth_basic_user_file /etc/nginx/.htpasswd; }定期审计配置# 检查异常封禁 awk $9 403 {print $1} /var/log/nginx/access.log | sort | uniq -c | sort -nr

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号