跳到主要内容
异次元店铺1 Nginx 限流与防恶意下单
异次元店铺1 /进阶技巧

Nginx 限流与防恶意下单

开店久了一定会遇到有人拿脚本刷你。多数不是针对你,只是自动化扫描顺手扫到。

一、Nginx 层限流

http 块里定义限流区:

# 按 IP 限流:每秒 10 个请求,突发 20
limit_req_zone $binary_remote_addr zone=general:10m rate=10r/s;
# 登录接口更严:每分钟 5 次
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
# 并发连接限制
limit_conn_zone $binary_remote_addr zone=conn:10m;

server 块里应用:

location / {
    limit_req zone=general burst=20 nodelay;
    limit_conn conn 10;
    # ...
}

location ~ ^/(user/authentication|admin) {
    limit_req zone=login burst=3 nodelay;
    # ...
}

:::warning burst 别设 0 设为 0 会让正常用户也被误伤——一个页面同时加载十几个静态资源是很正常的。burst 给的就是这个缓冲。 :::

二、挡掉扫描器

大量 404 通常是在扫后台路径和备份文件:

# 禁止访问敏感文件
location ~* \.(sql|bak|log|env|git)$ {
    deny all;
}

# 按 UA 拦常见扫描器
if ($http_user_agent ~* (sqlmap|nikto|nmap|masscan|acunetix)) {
    return 444;
}

444 是 Nginx 的特殊状态码:直接断开连接,不返回任何内容,比 403 更省资源。

三、业务层防护

Nginx 只能按 IP 限,换 IP 就绕过了。业务层要补上:

:::info 三层配合 Nginx 挡住无脑脚本,验证码挡住简单自动化,业务规则挡住有耐心的人工。三层都要有,任何一层单独用都会被绕。 :::

  • 注册限制:装「防恶意注册/下单」插件,可以限制同 IP 注册数量、要求邮箱验证
  • 人机验证:装 Turnstile 插件,在注册和下单环节加验证
  • 下单频率:限制同一用户单位时间内的下单次数
  • 订单超时:未支付订单 15 分钟自动关闭并释放库存,防止恶意占用库存

四、后台加固

  • 修改默认后台入口地址
  • 后台登录开启二次验证
  • 限制后台可访问 IP(如果你的 IP 固定)
  • 定期检查操作日志里的异常记录

最后一项容易被忽略——很多入侵是事后从日志里才发现的。

评论 0

目录
登录 / 注册 登录后可点赞与评论
风格
明暗
语言
风格
明暗
语言