参考资料

  1. 在 ESA 配置了“自定义缓存标签名称”(比如改成 ESA-Cache-Tag),源站就必须同步改用这个新标头名。
  2. 针对“流氓”爬虫,核心策略是 “拒绝礼貌,直接开火”。robots.txt 对它们形同虚设,必须在 Nginx 或 ESA 层面主动拦截。
  3. 阿里云 ESA(边缘安全加速)的“托管 DCV”功能。
  4. “边缘清洗 + 源站隐身 + Nginx 兜底” 三层纵深
  5. Zstd 相比 Gzip 和 Brotli,在性能上的突出表现确实是“速度与压缩率的平衡”
  6. 推荐 ESA 边缘防护 + Nginx 兜底 的组合。
  7. _acme-challenge.madama.cnDNS 直接解析madama.cn.118555529491327488.dcv.aliyun-esa.com,申请失败
  8. 导致 net::err_blocked_by_response 的直接原因

推荐 ESA 边缘防护 + Nginx 兜底 的组合。

针对扫描,核心是识别“批量探测”行为并自动封禁,而非逐个拉黑 IP。结合你 Fresns 的场景,推荐 ESA 边缘防护 + Nginx 兜底 的组合。

🛡️ 首选:ESA 扫描防护规则(标准版+)

阿里云 ESA 内置了针对扫描的专项模块,直接在控制台开启即可,零运维成本:

  • 高频扫描封禁:同一 IP 在 1 分钟内触发 10 次基础防护规则,封禁 1 天。

  • 目录遍历封禁:10 秒内请求超 20 次、404 响应超 70% 且尝试不存在的目录超 5 个,封禁 30 分钟。

  • 扫描器 UA 封禁:自动拦截 sqlmap、Nessus、Acunetix 等扫描器特征。

⚙️ 兜底:Nginx 精准封堵(源站防线)

若 ESA 套餐不支持或请求穿透,在 Nginx 中配置以下规则:

1. 敏感文件路径封堵(最有效)
扫描器最爱探测 .env、.git、备份文件。在 server 块中直接 return 404,避免暴露拒绝逻辑:

location ~* \.(bak|conf|sql|log|env|ini|yml|git|svn|htaccess)$ { return 404; }
location ~ /\. { deny all; }

2. UA 黑名单拦截
在 http 块用 map 定义扫描器 UA,server 块中判断 $bad_ua 并返回 403:

# http 块中定义
map $http_user_agent $bad_ua {
    default 0;
    ~*(sqlmap|nikto|dirbuster|nuclei|acunetix|masscan|nmap|wpscan) 1;
}
# server 块中拦截
if ($bad_ua) { return 403; }

3. 针对路径探测的精准限流
普通限流按 IP 计算,扫描器会在同一个 IP 下请求大量不同路径。用 $binary_remote_addr$uri 作为限流键,能精准识别“短时间内请求大量不同 URI”的行为:

limit_req_zone $binary_remote_addr$uri zone=path_scan:10m rate=2r/s;
# 在 location 中应用
limit_req zone=path_scan burst=5 nodelay;

建议优先启用 ESA 的扫描防护规则,它能在边缘直接完成拦截,完全不消耗你的 Nginx 和 PHP 8.3-FPM 资源。

作者:王壹杰
时间:2026-09-28 12:10:34
来源:https://yun.ciilii.com/