Apache2.4Howto“;“不需要知识产权”;每虚拟主机?
我知道它效率不高,但我在根htdocs(for“/”)上有一个大的.htaccess,里面有禁止的IP,类似这样:Apache2.4Howto“;“不需要知识产权”;每虚拟主机?,apache,.htaccess,httpd.conf,Apache,.htaccess,Httpd.conf,我知道它效率不高,但我在根htdocs(for“/”)上有一个大的.htaccess,里面有禁止的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> 1.161.58.238 - 1.163.1.5 - 1.163.192.83 - 不需要ip 1.16
<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>
1.161.58.238 -
1.163.1.5 -
1.163.192.83 -
不需要ip 1.163.1.5
不需要ip 1.163.192.83
不需要ip 1.163.193.136
... (4000多个IP)
(它在分析访问日志文件后按脚本进行了更新:它扫描404 w00tw00t和脚本kiddies尝试,明白我的意思了)。使用.htaccess背后的思想是在添加新IP时动态更新和解析:-)
像许多公司一样,我在http:80上有一个公共Virtualhost侦听器,具有多个ProxyPass规则,然后在localhost(或LAN IP)上侦听多个后端站点
很明显,我们的目标是像大多数公司一样,在反向代理中配置所有的安全功能。因此,正如预期的那样,每个对后端的请求都有127.0.0.1(或本地代理IP)作为源IP
但是,我注意到此配置没有按预期工作:仅对后端站点评估.htaccess。不适合前面的虚拟主机。这与我需要做的恰恰相反/
我应该怎么做才能让它只为虚拟主机工作?最好的方法是什么?我应该改用RewriteCond吗?好的,我发现这是不可能的,因为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>