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

Ubuntu18下Nginx使用Certbot续期SSL报Connection reset by peer错误

问题根因与对应解答

为什么Certbot会启动无法管控的Nginx残留进程

你混淆了Certbot不同认证插件的运行逻辑:网传“续期要停Nginx”是--standalone独立认证插件的操作要求,和你用的--nginx插件逻辑完全不兼容。
--nginx插件的正常运行前提是Nginx通过系统服务管理器(Ubuntu 18上默认为systemd)正常运行,且能从nginx.conf配置的PID路径读到合法的运行进程号。你提前手动执行service nginx stop后,systemd会清空/run/nginx.pid文件,插件检测不到运行中的Nginx时,会直接调用nginx二进制文件自行拉起进程,但这个启动过程没有走systemd的服务管控逻辑,后续验证完成需要回滚配置、关闭临时进程时,插件读不到有效的PID值(对应你error.log里的invalid PID number "" in "/run/nginx.pid"报错),没法给自启动的Nginx进程发终止信号,就会留下占端口的残留进程。
你遇到的Connection reset by peer报错,本质就是这个插件私自拉起的残缺Nginx进程加载的临时验证配置不完整,对CA发来的随机验证路径请求处理异常直接断开连接——你手动创建固定test文件能正常访问,是因为残缺进程还能处理静态根目录的文件请求,但插件动态生成的验证路径规则没正确加载,CA访问自然会失败。

HTTP-01验证是否需要手动创建/.well-known/acme-challenge/路径文件

分认证模式决定,不需要默认手动创建:

  • 用--nginx插件:不需要手动建目录或文件,插件会临时在Nginx配置中注入最高优先级的location规则,直接在内存中返回CA要求的验证字符串,不会往磁盘webroot写任何文件,验证完成后自动删除临时配置。
  • 用--webroot插件:需要保证站点根目录下该路径有读写权限,插件会自动把验证文件写入对应目录,验证完自动删除,不需要手动提前创建目录。
  • 用--standalone插件:插件会自行启动临时Web服务监听端口,完全不依赖Nginx和磁盘文件,这时候才需要提前停掉占用80端口的服务。

现有Nginx配置是否干扰验证

你贴出的80端口基础server块配置本身不会干扰验证流程,但存在两个明确的干扰项:

  • 执行certbot命令前手动停止系统托管的Nginx、导致PID文件丢失,是触发所有异常的核心原因。
  • 如果开启了IPv6监听但服务器IPv6网络不通、或者前置了CDN/WAF拦截规则,可能出现本地IPv4访问正常、CA走IPv6或被WAF拦截时返回连接重置的问题。
正常的Certbot Nginx插件验证流程
  • 插件读取系统Nginx主配置、所有站点vhost配置,匹配目标域名对应的server块,确认Nginx通过系统服务正常运行、PID文件有效。
  • 生成临时Nginx配置副本,在对应域名的80端口server块中注入高优先级的/.well-known/acme-challenge/路径规则,配置返回CA指定的验证字符串,不会修改磁盘上的原有配置文件。
  • 校验临时配置语法合法后,给正在运行的Nginx主进程发重载信号加载临时配置,全程不中断现有服务、不额外启动新的Nginx进程占用端口。
  • 通知CA发起HTTP-01验证请求,CA访问对应验证路径拿到匹配的字符串即判定验证通过。
  • 无论验证成功或失败,插件都会自动重载回原有Nginx配置、清理临时文件,不会残留配置或进程。
问题修复步骤
  1. 先清理残留进程和异常文件:
    pkill nginx
    lsof -i:80 -i:443 # 确认80、443端口无进程占用
    rm -f /run/nginx.pid
    
  2. 通过系统服务正常启动Nginx,确认运行状态正常:
    systemctl start nginx
    cat /run/nginx.pid # 确认能读到合法的数字PID
    curl -I http://mysite.co.uk # 确认返回200 OK响应
    
  3. 不要停止Nginx服务,直接执行续期命令:
    certbot renew --nginx
    # 如果需要重新签发指定域名证书可执行:
    # certbot run --nginx -d mysite.co.uk -d www.mysite.co.uk
    
  4. 若仍报连接重置错误,做两项排查:
    • 临时关闭域名的CDN/WAF代理,让CA请求直接回源,验证通过后再重新开启CDN。
    • 若服务器未配置可用IPv6网络,注释掉Nginx配置中的listen [::]:80;等IPv6监听规则,重载Nginx后再重试续期。
  5. 续期成功后执行systemctl reload nginx加载新证书即可,后续自动续期任务不需要手动停止Nginx服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:18:21