Nginx 防盗链、防刷、防CC攻击配置

阅读:14 2025-07-23

本文深入讲解了如何利用 Nginx 配置实现防盗链、防刷和防CC攻击的有效手段,帮助网站防止资源被恶意盗用、减少恶意请求,提高服务器安全性和稳定性。内容涵盖基础配置示例及进阶策略,适合运维和安全工程师参考。本文来自码农资讯网,专注运维安全与性能优化。


一、防盗链配置

防盗链是指防止别人网站直接引用你网站的图片、视频等资源,浪费带宽资源。

示例配置:

location /images/ {
    valid_referers none blocked codesou.cn *.codesou.cn;
    if ($invalid_referer) {
        return 403;
    }
}
  • valid_referers 定义允许的来源,none 允许无来源(直接访问),blocked 允许Referer被屏蔽的请求。

  • $invalid_referer 变量为真时,拒绝访问(403)。


二、防刷配置

防刷指防止恶意用户或爬虫大量请求接口,造成资源浪费。

1. 限速(limit_req)

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

    server {
        location /api/ {
            limit_req zone=one burst=20 nodelay;
            proxy_pass http://backend_api;
        }
    }
}
  • limit_req_zone 定义了每个 IP 的请求频率(此例每秒10个请求)。

  • burst 允许突发请求数,超过立即限速拒绝。

  • nodelay 禁止排队请求,超过直接拒绝。


三、防CC攻击配置

CC攻击是指攻击者通过大量短时间内的请求耗尽服务器资源。

1. 限连接数(limit_conn)

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
        location / {
            limit_conn addr 10;
            proxy_pass http://backend;
        }
    }
}
  • 每个IP最多保持10个并发连接,超出拒绝。

2. 结合限速和限连接

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s;

    server {
        location / {
            limit_conn addr 10;
            limit_req zone=req_limit burst=10 nodelay;
            proxy_pass http://backend;
        }
    }
}

四、其他防护手段

  • 验证码:对高频接口结合验证码防止自动化攻击。

  • 黑名单:使用 deny 规则封禁恶意 IP。

  • 防火墙:结合硬件或云端防火墙过滤异常流量。

  • 日志监控:实时分析日志,及时发现异常请求。


五、总结

通过合理配置 Nginx 的防盗链、防刷和防CC策略,能够有效保护网站资源,防止恶意攻击和流量浪费,保障网站稳定运行。建议结合业务特点调整策略参数,实现最佳防护效果。


标签: Nginx
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!