2014-10-06 120 views
0

我知道这是效率不高,但我的根htdocs目录(即“/”)大的.htaccess蒙山禁止IP里面,像这样:apache 2.4 howto“不需要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> 

(它在分析scriptly更新访问日志文件:它扫描404 w00tw00t和脚本小子尝试,看看我的意思)。当我添加新的IP时,使用.htaccess的理念将被动态更新和解析:-)

与许多公司一样,我有一个公共虚拟主机在http:80上监听多个ProxyPass规则,然后多个后端在本地主机(或局域网IP)上侦听的站点。

目标显然是配置反向代理中的所有安全性内容,就像大多数公司一样。因此,如预期的那样,对后端的每个请求都有127.0.0.1(或本地代理IP)作为源IP。

但是我注意到这个配置没有按预期工作:.htaccess的后端网站只有评估。不适用于正面的虚拟主机。完全相反,我需要做的! :/

我应该怎么做才能使其仅适用于虚拟主机?什么是最好的方法?我应该使用RewriteCond吗?

回答

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 -