如何解决利用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。

相关推荐
Kiyra2 小时前
WebSocket vs HTTP:为什么 IM 系统选择长连接?
分布式·websocket·网络协议·http·设计模式·系统架构·wpf
JS_GGbond3 小时前
WebSocket实战:让网页“活”起来!
网络·websocket·网络协议
小李独爱秋3 小时前
计算机网络经典问题透视:在浏览器中应当有几个可选解释程序?
服务器·网络·网络协议·tcp/ip·计算机网络
微爱帮监所写信寄信5 小时前
微爱帮监狱写信寄信工具服务器【Linux篇章】再续:TCP协议——用技术隐喻重构网络世界的底层逻辑
linux·服务器·开发语言·网络·网络协议·小程序·监狱寄信
发光小北5 小时前
SG-LORA_2024 系列(多信号转 LORA 无线中继器)特点与功能介绍
网络协议
heartbeat..6 小时前
网络通信核心知识全解析:模型、协议与 TCP 机制
java·网络·网络协议·tcp/ip
一只小鱼儿吖7 小时前
从代理ip的底层逻辑探讨下如何选择代理ip商。
网络·python·网络协议·tcp/ip
m0_537473499 小时前
Nginx 生产环境平滑升级实战:从 1.24.0 到 1.28.0 的零宕机操作全记录
运维·nginx
鲨莎分不晴10 小时前
深入理解 UDP:大道至简的传输层基石
网络·网络协议·udp
微爱帮监所写信寄信11 小时前
微爱帮监狱寄信写信小程序:深入理解JavaScript中的Symbol特性
开发语言·javascript·网络协议·小程序·监狱寄信·微爱帮