欢迎光临
我们一直在努力

如何防止服务器被刷流量?Nginx限制IP并发数实战

本文详解Nginx限制单个IP并发连接数的4种实战方案,包含http/stream模块配置、突发流量处理技巧、压力测试方法及常见问题排查,并附赠电商平台防爬虫、直播服务器抗DDoS攻击等真实案例。

网站频繁崩溃怎么办?

当服务器日志出现大量ESTABLISHED状态连接时,可能是遭遇CC攻击或恶意爬虫。某跨境电商平台曾因未做并发限制,被羊毛党用2000+并发连接刷崩服务器。

  • 问题定位:执行netstat -n | awk '/^tcp/ {print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr查看IP连接数
  • 解决方案:在nginx.conf中添加limit_conn_zone $binary_remote_addr zone=perip:10m;
  • 配置示例:限制每个IP保持50个连接,突发允许100个
    limit_conn perip 50;
    limit_conn_log_level warn;
    limit_conn_status 503;

直播平台如何应对流量洪峰?

某在线教育平台在促销期间采用漏桶算法实现平滑限流,通过stream模块实现四层代理控制:

  1. 新建/etc/nginx/stream.conf.d/limit_conn.conf
  2. 配置TCP连接限制:
    limit_conn_zone $remote_addr zone=stream_perip:10m;
    server {
      listen 1935;
      limit_conn stream_perip 30;
    }
  3. 使用sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=1200调整超时时间

配置不生效怎么排查?

某论坛用户设置limit_conn后仍出现连接数超标,最终发现是Nginx版本差异导致:

版本 注意事项
≥1.9.3 支持stream模块限流
≥1.11.5 支持PROXY协议
≤1.7.6 需安装第三方模块

推荐使用nginx -V确认编译参数,并通过ab -c 100 -n 1000 http://test.com/进行压力测试。

如何防止服务器被刷流量?Nginx限制IP并发数实战

常见问题解答

Q:限制连接数会影响正常用户吗?
A:合理设置阈值可兼顾安全与体验,建议参考net.core.somaxconn系统参数

Q:如何动态调整限制规则?
A:使用nginx -s reload热加载配置,或配合Lua脚本实现动态限流

Q:CDN环境下如何获取真实IP?
A:在http模块添加:
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;

赞(0) 打赏
未经允许不得转载:九零云资讯网 » 如何防止服务器被刷流量?Nginx限制IP并发数实战

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫