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

Docker部署React+Laravel站点时Nginx配置Certbot SSL证书失败如何解决

子域名Certbot SSL证书签发配置解决方案

问题根源梳理

你遇到的报错来自两个核心配置错误:

  1. Nginx的ACME验证路径配置不符合Certbot要求,要么返回固定静态页要么找不到验证文件
  2. Docker容器未开放80、443公网端口,无法完成Certbot的HTTP-01验证流程

具体修正步骤

1. 修正Nginx acme-challenge配置块

删除原来指向固定index.html的alias配置,修改为指向验证文件根目录:

location ~ /.well-known/acme-challenge {
    allow all;
    root /var/www/certbot;
    default_type "text/plain";
    try_files $uri =404;
}

原理说明:Certbot发起验证时会在对应目录下生成随机名称的验证文件,公网请求对应随机路径时需要返回对应文件内容,指向固定静态页或者未配置正确根目录都会导致验证失败。

2. 开放Docker 80、443端口映射

Certbot的HTTP-01验证要求必须通过公网80端口访问验证资源,SSL服务也需要443端口对外提供服务:

  • 若使用docker run启动容器,添加端口映射参数:
docker run -p 80:80 -p 443:443 [其余启动参数]
  • 若使用docker-compose编排,在Nginx服务配置下添加:
services:
  nginx:
    # 其余配置保持不变
    ports:
      - "80:80"
      - "443:443"

额外注意:如果你的Nginx内部监听端口是8888,需要将映射规则改为-p 80:8888,或者将Nginx配置的监听端口改为80,保证公网80端口请求可以正确转发到Nginx服务。

3. 重新执行证书签发命令

配置修正完成后重新运行Certbot命令即可完成签发:

certbot --nginx -d <你的子域名> -m <你的联系邮箱>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:39:01