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

相关推荐
游戏开发爱好者84 分钟前
如何解决浏览器HTTPS不安全连接警告及SSL证书问题
安全·ios·小程序·https·uni-app·iphone·ssl
jinxinyuuuus16 分钟前
局域网文件传输:WebSockets信令、ICE协议栈与P2P连接的生命周期管理
服务器·网络协议·p2p
阿巴~阿巴~18 分钟前
探秘HTTP与URL:解锁网络通信的密钥
网络·网络协议·http·域名·dns·url·编码与解码
Macbethad24 分钟前
高性能 CANopen 主站程序技术方案 (基于 WPF)
网络协议·wpf·信息与通信
2***s67210 小时前
Failed to restart nginx.service Unit nginx.service not found
运维·nginx
寂寞旅行10 小时前
解决摄像头/麦克风 在HTTP环境下的调用问题
网络·网络协议·http
爱学习的程序媛10 小时前
《图解HTTP》核心知识点梳理
网络·网络协议·http·https
老蒋新思维12 小时前
创客匠人 2025 全球创始人 IP+AI 万人高峰论坛:AI 赋能下知识变现与 IP 变现的实践沉淀与行业启示
大数据·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
Erwin Rommel55912 小时前
nginx的https服务搭建实验
服务器·nginx·https
游戏开发爱好者812 小时前
Charles 抓不到包怎么办?从 HTTPS 代理排错到底层数据流补抓的完整解决方案
网络协议·http·ios·小程序·https·uni-app·iphone