拒绝.htaccess与禁止IP列表stopforumspam.com不工作?

所以我试图使用.htaccess禁止从本网站获得的可疑垃圾邮件IP地址的大名单(50,000)。

该列表几乎是1M的大小,当我添加列表中的每个地址拒绝指令…但是当我将加载的.htaccess文件应用到服务器它barf和没有页面加载403错误。

我的问题

  1. 有一个.htaccess文件的大小有限制吗?
  2. 它可以包含在文件中的IP地址的deny from数量有限制吗?
  3. 有没有更好的办法做什么即时通讯在服务器级别尝试做(我明白我可以检查在提交过程中的Web应用程序列表,但我想学习的东西)

除了OS文件大小限制(通常为2GB或更多)以外,.htaccess文件的大小没有限制。 但是,使用.htaccess文件会带来很大的性能影响,因为Apache在每次加载页面都会recursion地处理它们(遍历目录树)。 事实上, Apachebuild议不要使用.htaccess,除非绝对必要,例如不能访问更高级别的configuration。

处理IP阻塞的标准方法是使用内置的Linux防火墙iptables 。 您可以使用其他应用程序来帮助pipe理iptables,例如Fail2ban 。 看到这个博客文章 ,以永久的方式与Fail2ban做到这一点。 您也可以通过添加路由来阻止它们: route add -host 192.168.0.123 reject 。 请记住,您可以使用所有这些IP地址的全部类别,以便列出192.168.0.1,192.168.0.2,… 192.168.0.254,而不是列出networking:192.168.0.0/24。

无论您使用什么方法,请记住要非常小心,不要阻止自己 ,特别是SSH等服务。

有没有更好的方式来做什么即时尝试在服务器级别做

我不知道它是否更好,但我更喜欢这个:

  1. 为每个IP创build一个新文件,结构像deny/198/198.51.100.201
  2. 在.htaccess中使用下面的代码来阻止IP:

     RewriteCond %{REMOTE_ADDR} ^([0-9]{1,3})\. RewriteCond /usr/www/{your_path}/deny/%1/%{REMOTE_ADDR} -f RewriteRule . - [F] 

我从来没有对它进行过基准testing,但是我拒绝相信将每个请求与50000个IP进行比较会更快,而不是利用文件系统的inodecaching。 或build立一个列出的IP的索引Apache?

最后,我知道这一点是没有意思的,因为我使用这种技术为我的访问者提供了一个validation码,以防止他们被意外阻塞。 其他方法( allow, denyiptables ,…)没有提供这样的function。

注意:我使用第一个IP块的子文件夹来避免每个文件夹超过32000个文件。