如何解决利用cron定时任务自动更新SSL证书后Nginx重启问题

利用cron定时任务自动更新SSL证书后,用浏览器访问网站,获取到的证书仍然是之前的。原因在于没有对Nginx进行重启。

据说certbot更新完成证书后会自动重启Nginx,但显然经我检测不是这回事儿。

所以我们需要创建一bash脚本,然后定时调用这个脚本。

第01步:创建一个新的脚本文件 renew-certificate.sh

如果Nginx不可以通过Nginx命令重启,那么脚本如下:

内容如下:

bash 复制代码
#!/bin/bash

# 运行 Certbot 更新命令
certbot renew --quiet

# 检查证书是否已更新
if [ $? -eq 0 ]; then
    # 证书已更新,重新加载 Nginx
    sudo /usr/local/nginx/sbin/nginx -s reload
fi

如果Nginx可以通过Nginx命令重启,那么把上面脚本中的:

bash 复制代码
sudo /usr/local/nginx/sbin/nginx -s reload

换成:

bash 复制代码
systemctl reload nginx

第02步:确保脚本具有执行权限

bash 复制代码
chmod +x renew-certificate.sh

或者直接用护卫神面板进行修改。

第03步:修改定时任务,调用脚本

bash 复制代码
sudo crontab -e
bash 复制代码
34 4 * * * /opt/bash_scripts/renew-certificate.sh

Centos上的默认文本编辑器vi的操作方法积累

在上面的任务中,脚本首先运行 certbot renew 命令,然后检查返回的退出码。如果退出码为0(即证书已成功更新【如果是多个证书,只有一个证书更新了,退出码都为0】),则重新加载 Nginx。

这样,你的定时任务将运行脚本,脚本将负责更新证书并重新加载 Nginx。

相关推荐
街灯L1 小时前
【Ubuntu】安装配置nginx文件版
服务器·nginx·ubuntu
HIT_Weston1 小时前
53、【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 单/多线程分析(五)
网络协议·http·gitlab
ylmzfun1 小时前
UDP协议详解:从历史背景到实战应用
网络协议·udp
阿巴~阿巴~1 小时前
HTTP服务器实现请求解析与响应构建:从基础架构到动态交互
服务器·网络·网络协议·http·交互·请求解析·响应构建
黛琳ghz1 小时前
极速云原生:openEuler之Redis与Nginx部署性能实战
redis·nginx·云原生·操作系统·压力测试·openeuler·服务器部署
汤愈韬1 小时前
知识点4:Nat Server的Server-map 跟ASPF中的server map区别与联系
网络协议·网络安全·security·huawei
行走的陀螺仪2 小时前
实时通信底层原理深度剖析:短轮询、长轮询与WebSocket的本质差异
前端·网络·websocket·网络协议
凤凰战士芭比Q3 小时前
web中间件——(二)Nginx(高级功能、优化)
前端·nginx·中间件
北京耐用通信10 小时前
电磁阀通讯频频“掉链”?耐达讯自动化Ethernet/IP转DeviceNet救场全行业!
人工智能·物联网·网络协议·安全·自动化·信息与通信
2301_8107463113 小时前
CKA冲刺40天笔记 - day20-day21 SSL/TLS详解
运维·笔记·网络协议·kubernetes·ssl