nginx安装在IP为x.x.x.x的服务器上
准备工作
第一步,nginx安装。
第二步,nginx配置。
第三步,nginx启动和访问站点。
第四步,nginx服务关闭和重启。
第五步,新建nginx启动脚本可以不进入nginx根目录即可进行相应的操作,设置服务器重启时nginx会自动启动。
nignx禁止IP地址访问的第一种方法
第一步,在/etc/nginx文件夹中新建blocksip.conf文件。
命令:cd /etc/nginx
vim blocksip.conf
在blocksip.conf文件中添加下面的代码:
allow all;
# 封禁127.0.0.1
deny 127.0.0.1;
第二步,编辑/etc/nginx/nginx.conf文件。
在/etc/nginx/nginx.conf文件中,只需要在http{}中添加下面代码:
include blocksip.conf;
第三步,重启nginx服务。
命令:service nginx reload
nignx禁止IP地址访问的第二种方法
第一步,编辑/etc/nginx/nginx.conf文件。
在/etc/nginx/nginx.conf文件中,只需要在server{}中添加allow和deny的IP地址:
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
allow all;
# 封禁196.0.0.1
deny 196.0.0.1;
root html;
index index.html index.htm;
}
注意:allow必须在deny的前面。
第二步,重启nginx服务。
命令:service nginx reload
实现自动封禁IP地址
第一步,AWK记录access.log文件中每分钟访问超过60次的IP地址。
命令:awk '{print $1}' /var/log/nginx/access.log | sort | uniq -cd | awk '{if($1>60)print $0}'
注释:
awk '{print $1}' /var/log/nginx/access.log:取出access.log的第一列即为IP;
sort | uniq -cd:去重和排序;
awk '{if($1>60)print $0}':判断重复的数量是否超过60个,超过60个就展示出来。
第二步,通过编写shell脚本来实现整体功能。
在/usr/local/nginx文件夹中新建ip_test.sh脚本,在脚本文件中添加下面的代码:
# 解封IP
echo "" > /etc/nginx/blockip.conf
# 判断重复的数量是否超过60个,超过60个就展示出来
ip_list=$(awk '{print $1}' /var/log/nginx/access.log | sort | uniq -cd | awk '{if($1>60)print $0}')
# 判断变量是否为空
if test -z "$ip_list"
then
# 若变量为空,则写入11.log中,并重新启动nginx
echo "为空" >> /var/log/nginx//11.log
/usr/sbin/nginx -s reload
else
# 若变量不为空,则需要在前面加上deny格式,IP写入blockip.conf
echo "deny" $ip_list > /etc/nginx/blockip.conf
# 去除掉前面的行数,写入后再读取一次
ip_list2=$(awk '{print $3}' /etc/nginx/blockip.conf)
# 把读取出来的值再次写入blockip.conf
echo "deny" $ip_list2";"> /etc/nginx/blockip.conf
# 重启nginx
/usr/sbin/nginx -s reload
# 清空之前的日志,截取最新的日志
echo "" > /var/log/nginx/access.log
fi
第三步,使用crontab定时来实现访问每分钟访问超过60次的IP地址。
# 添加执行权限
命令:chmod +x /usr/local/nginx/ip_test.sh
# 添加定时任务(每一分钟运行一次)
命令:crontab -e
添加以下代码:
* * * * * sh /usr/local/nginx/ip_test.sh
# 查看是否写入
命令:crontab -l
# 重启一下定时配置
命令:systemctl restart crond.service
关于allow和deny的使用
第一步,nginx禁止单个IP。
在nginx中可以加入下面的命令:文章来源:https://www.toymoban.com/news/detail-456387.html
deny 127.0.0.1;
第二步,nginx禁止多个IP。
在nginx中可以加入下面的命令:
deny 127.0.0.1 196.0.0.1;
注意:nginx禁止多个IP地址,多个IP地址由空格分开。
第三步,nginx禁止从127.0.0.1到127.255.255.254的IP段。
在nginx中可以加入下面的命令:
deny 127.0.0.0/8;
第四步,nginx禁止从127.255.0.1到127.255.255.254的IP段。
在nginx中可以加入下面的命令:
deny 127.255.0.0/16;
第五步,nginx禁止从127.255.255.1到127.255.255.254的IP段。
在nginx中可以加入下面的命令:
deny 127.255.255.0/24;
第六步,nginx禁止所有IP地址。
在nginx中可以加入下面的命令:
deny all;
第七步,allow与deny配置相同,如果需要开放某个IP段,只需要把上面的deny改成allow。文章来源地址https://www.toymoban.com/news/detail-456387.html
到了这里,关于Nginx禁止/屏蔽攻击服务器的IP地址的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!