Mis*_*ong 16 ip .htaccess block text-files
我阅读并了解如何使用htaccess阻止ip:
order deny,allow
deny from 111.222.33.44
deny from 55.66.77.88
...
allow from all
Run Code Online (Sandbox Code Playgroud)
但我的黑色IP列表包括数千个IP.我将所有IP保存到blacklist.txt文件中.
我可以使用htaccess调用blacklist.txt并阻止存储在此文件中的所有IP吗?如果是这样,怎么样?
Jon*_*Lin 19
您可以尝试使用RewriteMap的变体.您需要访问server/vhost配置,因为该指令仅在那里工作.然后,您可以使用htaccess文件中的映射.
假设你的blacklist.txt文件如下所示:
111.222.33.44 deny
55.66.77.88 deny
192.168.0.1 allow
Run Code Online (Sandbox Code Playgroud)
您可以像这样定义地图:
RewriteEngine On
RewriteMap access txt:/path/to/blacklist.txt
Run Code Online (Sandbox Code Playgroud)
然后在你的htaccess中,你可以调用地图:
RewriteEngine On
RewriteCond ${access:%{REMOTE_ADDR}} deny [NC]
RewriteRule ^ - [L,F]
Run Code Online (Sandbox Code Playgroud)
该条件调用映射并检查远程地址是否映射到单词"deny",如果是,则重写规则完全禁止访问.
如果您的blacklist.txt只是一个IP列表,并且您不想在每个IP之后添加"deny",则需要调用程序映射类型并编写脚本,如下所示:
#!/bin/bash
while true
do
read INPUT
MATCH=`grep $INPUT /path/to/blacklist.txt`
if [ -z "$MATCH" ]; then
echo "allow"
else
echo "deny"
fi
done
Run Code Online (Sandbox Code Playgroud)
哪些无限循环读取输入并greps blacklist.txt文件.如果IP在文件中,则输出"拒绝",否则输出"允许".然后你就像这样创建地图:
RewriteEngine On
RewriteMap access prg:/path/to/blacklist.txt
Run Code Online (Sandbox Code Playgroud)
并且根据地图检查的重写规则也不例外.