LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Nginx 限流:如何保护你的服务器免受暴力破解攻击

admin
2025年11月25日 11:27 本文热度 648

你的 Web 应用每天都在面对各种自动化攻击,其中最常见的一种就是 暴力破解登录 —— 黑客会不停尝试不同的用户名和密码,直到猜中为止。

暴力破解不仅有安全风险,还会把你的服务器拖慢,甚至直接干趴。

如果你的站点是通过 Nginx 对外服务,那你已经有了非常好用的防御工具 —— 限流(Rate Limiting)

这篇文章会手把手教你如何使用 Nginx 的限流功能来减少暴力破解尝试,并附上常用配置和最佳实践。

为什么要做限流?

限流并不是“可选项”,而是非常必要的安全措施,因为:

  • 防止暴力破解登录,限制单个 IP 重复尝试密码

  • 保护服务器资源,避免被恶意流量拖垮

  • 让资源使用更公平,避免某个用户或脚本把服务器占满

  • 增强整体安全性,配合 WAF、防火墙、监控构成多层防御

一句话总结:
限流 = 防止被薅秃 = 提升系统安全与稳定性

Nginx 的限流功能有哪些?

Nginx 提供两个核心限流模块:

  1. limit_req_zone + limit_req:限制每秒/每分钟的请求数(常用于登录接口)

  2. limit_conn_zone + limit_conn:限制同时连接数(常用于下载、流媒体)

防暴力破解主要使用 请求限流

Step 1:定义一个限流区域(limit_req_zone)

首先需要在 http {} 里定义一个限流区域,用来记录每个客户端(IP)的请求情况。

http {
    # 定义名为 one 的限流区    # 10MB 内存,可存约 16 万个 IP    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/m;
    server {        listen 80;        server_name example.com;
        location /login {
            # 使用限流区 one            limit_req zone=one burst=10 nodelay;
            proxy_pass http://backend;        }
    }}

配置说明:

  • $binary_remote_addr:按 IP 地址限流

  • rate=5r/m:每个 IP 每分钟最多 5 次请求

  • burst=10:允许瞬间突发多 10 次(超过就被拒绝)

  • nodelay:超过限制就直接返回错误,不排队

对于登录接口,这个限流已经非常严格,可以大幅降低暴力破解成功率。

Step 2:测试限流效果

测试是否生效:

for i in {1..20}; do curl -I http://example.com/login; done

当超过限制后,你会看到:

HTTP/1.1 503 Service Temporarily Unavailable

说明限流已开始工作。


Step 3:自定义限流后的提示页面

你可能不想让用户看到默认的 503 错误,这里可以自定义返回内容:

server {    listen 80;    server_name example.com;    error_page 503 @custom_limit;    location @custom_limit {        return 429 "请求太频繁,请稍后再试。";    }    location /login {        limit_req zone=one burst=10 nodelay;        proxy_pass http://backend;    }}

现在当用户触发限流,会看到更友好的提示。


Step 4:更多可选优化与技巧

✔ 登录接口:限得越严格越好

例如:

  • 5 次/分钟

  • burst=5

✔ API 接口:限制要合理,不要误伤用户

例如:

  • 30 次/秒

✔ 静态资源不需要限流

CSS/JS/图片一般不限制。

✔ 白名单 IP(如公司内网、管理员 IP)

location /login {    allow 192.168.1.100;  # 内部管理员    deny all;    limit_req zone=one burst=10 nodelay;    proxy_pass http://backend;}

特别提醒:

限流不是万能的,但它是非常重要的一层防御。
你还应该:

  • 强制 HTTPS,避免密码被截取

  • 使用 强密码策略 + 登录失败次数限制

  • 配合 验证码 / MFA 多因子认证

  • 使用 Fail2ban 等工具根据日志自动封 IP

  • 定期监控 Nginx 日志

    • /var/log/nginx/access.log

    • /var/log/nginx/error.log

安全不是“做一次就完”,而是“持续防御”。



总结:

Nginx 限流能帮你:

  • 限制登录接口请求频率

  • 阻断暴力破解攻击

  • 降低恶意流量对服务器的冲击

  • 让系统更稳定、更安全

只需要几行配置,
你的应用安全性就能提升一个档次。

END

该文章在 2025/11/25 11:27:04 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved