前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Nginx实现崩溃重启

Nginx实现崩溃重启

原创
作者头像
SuperChen
修改2023-02-24 17:40:32
修改2023-02-24 17:40:32
6.2K20
代码可运行
举报
文章被收录于专栏:SuperChenSuperChen
运行总次数:0
代码可运行

前言

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

安装依赖

代码语言:javascript
代码运行次数:0
复制
yum install -y mailx sendmail

配置mail

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

代码语言:javascript
代码运行次数:0
复制
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
代码运行次数:0
复制
#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
代码运行次数:0
复制
chmod 755 nginx_restart.sh

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

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

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

代码语言:javascript
代码运行次数:0
复制
crontab  -l

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 安装依赖
    • 配置mail
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档