You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Certbot证书续期后Cron无法重载Nginx问题求助

问题排查与解决

一、cron任务失效原因及修复

cron的运行环境PATH比交互式shell窄很多,默认仅包含/usr/bin:/bin,而nginx和service命令通常位于/usr/sbin目录下,cron找不到这些命令导致后续操作失败。

修复方式二选一:

  1. 在命令中使用绝对路径:
{ /usr/bin/certbot renew; /usr/sbin/nginx -t && /usr/sbin/service nginx reload; } &>/dev/null
  1. 在cron任务开头指定完整PATH:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
{ certbot renew; nginx -t && service nginx reload; } &>/dev/null

二、Certbot Deploy钩子失效原因及修复

你的钩子脚本存在两个关键问题:

  1. 缺少shebang(脚本解释器声明),系统无法识别执行该脚本的shell;
  2. 同样可能存在命令路径缺失的问题。

修复步骤:

  1. 编辑钩子脚本/etc/letsencrypt/renewal-hooks/deploy/001-restart-nginx.sh,添加shebang并使用命令绝对路径:
#!/bin/bash
/usr/sbin/service nginx reload
  1. 验证钩子触发逻辑:deploy钩子仅在证书成功续期时运行,若当前证书仍在有效期内(比如剩余30天以上),执行certbot renew不会触发钩子。可通过强制续期命令测试:
certbot renew --force-renewal

另外,建议暂时移除&>/dev/null,将输出写入日志文件,方便后续排查问题:

{ certbot renew; nginx -t && service nginx reload; } >> /var/log/certbot_nginx_reload.log 2>&1

查看日志/var/log/certbot_nginx_reload.log即可定位具体错误。

内容的提问来源于stack exchange,提问作者Ser5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:10:31