前言
最近我的服务总是被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部署的,需要自行调整代码