如何在 Varnish VCL 中阻止此 URL 模式?

如何在 Varnish VCL 中阻止此 URL 模式?

我的网站受到垃圾邮件机器人和抓取工具的严重攻击。我使用过 Cloudflare,但问题仍然存在。问题是垃圾邮件机器人访问不存在的 URL,导致我的 drupal 后端负载过大,后端会一路引导数据库,只是为了提供 404 错误文档。

我不能简单地为所有页面未找到错误提供非 drupal 404,因为我需要让 drupal 捕获它们。由于 varnish 位于前面,它可以检查机器人是否运行良好并要求有效的 URL - 如果不是,它会向他们提供 404 或 403。这些机器人使用以下模式导致错误:

http://www.megaleecher.net/http:/www.megaleecher.net/Using_iPhone_As_USB_Mass_S/Using_iPhone_As_USB_Mass_S/Using_iPhone_As_USB_Mass_S/Using_iPhone_As_USB_Mass_S/Using_iPhone_As_USB_Mass_S/Using_iPhone_As_USB_Mass_S/Using_iPhone_As_USB_Mass_S/Using_iPhone_As_USB_Mass_Storage

现在,请建议一个正则表达式 varnbisg VCL 指令,它可以捕获这个 URL 模式并从 varnish 提供 404 错误,从而阻止它到达 apache/drupal?

答案1

您是否尝试过寻找以 /http 开头的 URL 路径?

if (req.url ~ "^/https?:") {
  error 404 "Not found" 
}

答案2

您是否考虑过对 404 实施缓存?为了使用正则表达式阻止这些,您需要保持 VCL 和后端同步以避免阻止有效的 URL。如果您只是将 404 缓存很长时间,您仍然需要从后端为每个 URL 加载一次,但后续请求将获得缓存的 404 页面。如果您向具有缓存 404 响应的 URL 添加实际内容,您可以手动清除。

答案3

“我的网站正遭受垃圾邮件机器人和抓取工具的严重攻击,”

它们是否来自同一个 IP?您是否尝试过屏蔽 IP 地址?

相关内容