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

Docker jrcs/letsencrypt-nginx-proxy-companion无法正常生成SSL证书求助

问题排查方案

核心问题定位

你当前遇到的问题核心是Let's Encrypt证书未成功生成,从你提供的目录结构可以看到两个子域名对应的证书目录都是空的,nginx只能调用默认的自签证书,所以浏览器会提示不安全,找不到对应域名的证书配置也会触发500错误。

具体排查步骤

  • 第一步:查看letsencrypt companion容器日志获取报错信息
    执行命令docker ps | grep letsencrypt找到对应容器名,再执行docker logs 容器名,可以直接看到证书申请失败的具体原因。
  • 第二步:检查端口放行规则
    服务器的安全组、本地防火墙(ufw/iptables)必须开放80、443端口的公网入站权限,Let's Encrypt的HTTP-01验证依赖80端口,端口被屏蔽会直接导致申请失败。
  • 第三步:验证域名解析配置
    两个子域名必须都解析到当前部署服务器的公网IP,解析记录不能有代理、CDN转发,确保公网可以直接通过域名访问到服务器的80端口。
  • 第四步:核对容器环境变量
    检查WordPress、phpMyAdmin容器的配置,必须完整配置三个环境变量:VIRTUAL_HOST(你的子域名)、LETSENCRYPT_HOST(和VIRTUAL_HOST一致)、LETSENCRYPT_EMAIL(你填写的有效邮箱),缺少任意一个都不会触发证书申请。
  • 第五步:调整容器启动顺序
    必须先完整启动nginx-proxy和letsencrypt companion容器,等待1分钟左右服务完全就绪后,再启动WordPress和phpMyAdmin容器,否则companion无法检测到新的域名申请,不会生成证书。
    你可以先执行docker stop $(docker ps -aq)停掉所有容器,先进入nginx-proxy目录执行docker-compose up -d,等待30秒后再进入站点目录执行docker-compose up -d即可。
  • 第六步:排查权限与限额问题
    1. 确认nginx-proxy/certs目录的权限允许容器写入,可以临时执行sudo chmod -R 777 /srv/www/nginx-proxy/certs测试。
    2. 如果你近期反复测试同一个域名的证书申请,可能触发Let's Encrypt的周申请限额(同一域名每周最多5次),可以换子域名测试或者等待7天后再尝试。

验证修复结果

修复完成后,查看nginx-proxy/certs下的子域名目录,会生成对应的.crt和.key文件,此时访问HTTPS站点就不会提示证书错误,500问题也会同步解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:24:03