我知道它效率不高,但我在根htdocs(对于“/”)有一个很大的 .htaccess whith禁止IP内部,如下所示:
<RequireAll>
Require not ip 1.163.1.5
Require not ip 1.163.192.83
Require not ip 1.163.193.136
... (4000+ IPs)
</RequireAll>
(在分析访问日志文件时脚本更新:它扫描404 w00tw00t和脚本小子尝试,看看我的意思)。使用.htaccess背后的想法是在添加新IP时动态更新和解析: - )
与许多公司一样,我有一个公共虚拟主机侦听http:80,具有多个ProxyPass规则,然后是多个后端站点侦听本地主机(或LAN IP)。
显然,目标很明显是在反向代理中配置所有安全性内容,就像大多数公司一样。因此,正如预期的那样,对后端的每个请求都有127.0.0.1(或本地代理IP)作为源IP。
但是我注意到此配置无法正常工作:.htaccess仅针对后端站点进行评估。不适用于前端虚拟主机。与我需要做的完全相反! :/
如何使其仅适用于Virtualhosts?什么是最好的方法?我应该使用RewriteCond吗?
答案 0 :(得分:0)
好吧我发现它是不可能的,因为RequireAll用于目录标签。 解决方案是:
# BANNED IPs
<IfModule rewrite_module>
RewriteEngine On
RewriteMap hosts-deny txt:/path/.htaccess.blacklist.ip.hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^ - [F]
</IfModule>
使用包含这样的行的.htaccess.blacklist.ip.hosts.deny:
1.161.58.238 -
1.163.1.5 -
1.163.192.83 -