Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache2.4Howto“;“不需要知识产权”;每虚拟主机?_Apache_.htaccess_Httpd.conf - Fatal编程技术网

Apache2.4Howto“;“不需要知识产权”;每虚拟主机?

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

我知道它效率不高,但我在根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.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>