我收到很多安装在 Apache 服务器上的 mod_evasive 发送的误报通知。它们总是发生在下载大型 PDF 文件时。当客户从我的网站下载 PDF 时,他们会使用许多同时连接,这会触发 mod_evasive 中的黑名单行为。有没有办法将 PDF 排除在 mod_evasive 跟踪之外?我使用的配置是否过于严格?我理解每个部署都有所不同,但我正在寻找建议。我想停止在部分下载请求上发送 403。
以下是日志
[Tue Dec 31 09:47:37 2013] [error] [client 70.180.65.28] client denied by server configuration: /srv/netce/Root/pdfs/catalogs/productid_3078.pdf
70.180.65.28 - - [31/Dec/2013:09:47:37 -0800] "GET /3078/Catalog_MD14.pdf HTTP/1.1" 403 1018 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"
70.180.65.28 - - [31/Dec/2013:09:47:37 -0800] "GET /3078/Catalog_MD14.pdf HTTP/1.1" 206 2560 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"
70.180.65.28 - - [31/Dec/2013:09:47:37 -0800] "GET /3078/Catalog_MD14.pdf HTTP/1.1" 206 1024 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"
70.180.65.28 - - [31/Dec/2013:09:47:37 -0800] "GET /3078/Catalog_MD14.pdf HTTP/1.1" 206 4096 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"
这是 mod_evasive 配置
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify [email protected]
DOSLogDir "/var/www"
DOSWhitelist 127.0.0.1
DOSWhitelist 192.168.*
</IfModule>
任何帮助都将受到赞赏。
答案1
写完这个问题后,我开始研究并寻找解决方案。我找到了一种解决方法,基本上就是禁用部分下载。这不是最有效的解决方案,但似乎有效。
<LocationMatch "\.pdf$">
Header unset Accept-Ranges
</LocationMatch>