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中可以加入下面的命令:
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://blog.csdn.net/weixin_43268590/article/details/130832562
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。