Nginx实现崩溃重启

2023-02-24 17:40:32 浏览数 (1)

前言

最近我的服务总是被CC攻击导致了nginx崩溃,服务不可用

安装依赖

代码语言:javascript复制
yum install -y mailx sendmail

配置mail

mail配置文件为/etc/mail.rc,用户级配置文件为~/.mailrc。这里使用全局配置文件,在/etc/mail.rc文件最后添加如下内容:

代码语言:javascript复制
set smtp=smtp.qq.com:587   # 这里填入smtp地址,这里的xxx为qq或者163等,如果用的云服务器,安全组策略要开放465/25端口,入站和出站都要开放该端口
set from=xxx.com               # 设置发信人邮箱和昵称(可以随便取)
set smtp-auth=login                 # 认证方式
set smtp-auth-user=xxx.com     # 这里输入邮箱账号
set smtp-auth-password=password  

我写了个检测nginx服务状态并检查崩溃重启的脚本

代码语言:javascript复制
#nginx service
 
#判断是否root用户运行
if [ $(id -u) != "0" ]
 
then
 
echo "当前用户不是 root 请使用root用户运行"
 
exit 1
 
fi
 
netstat -anop | grep 0.0.0.0:80
#判断80端口服务是否正常
if [ $? -ne 1 ]

then

exit

fi

echo $(date  %T%n%F)" Restart nginx Services " >> nginx.log

#启动nginx
/usr/local/nginx/sbin/nginx 
 
#发送邮箱预警
echo 'nginx已崩溃重启' | mail -s 'nginx警告' xxxxx@qq.com  

写完先赋个权限

代码语言:javascript复制
chmod 755 nginx_restart.sh

然后添加定时任务(定时检查)

代码语言:javascript复制
 crontab  -e
代码语言:javascript复制
*/5 * * * * sh /usr/local/nginx/sbin/nginx_restart.sh

每5分钟检查nginx服务是否正常

代码语言:javascript复制
crontab  -l

crontab -l 检查下定时任务是否正常

当然这个只适用于普通方式部署的nginx对于docker部署的,需要自行调整代码

0 人点赞