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

Nginx配置下Certbot ACME验证失败 如何排除.well-known路径HTTPS跳转

配置调整方案

问题根因

你当前的配置中return 301跳转规则属于80端口server块的全局规则,Nginx处理请求时即便匹配到了/.well-known/acme-challenge的location规则,依然会执行server层级的跳转逻辑,导致ACME验证的HTTP请求被重定向到HTTPS,而Let's Encrypt的验证请求不会跟随跳转,最终验证失败。

调整后的完整配置

server {
    listen [::]:80;
    listen 80;

    server_name testdomain.com www.testdomain.com;
    server_tokens off;

    location ~ /.well-known/acme-challenge {
        allow all; 
        root /var/www/certbot;
    }
     
    # 仅非ACME挑战的请求触发HTTPS跳转
    location / {
        return 301 https://www.testdomain.com$request_uri;
    }
} 

#other server configs

验证生效步骤

  • 配置修改完成后先执行nginx -t检查语法是否正确,确认无报错后执行nginx -s reload重载配置生效
  • 若使用docker compose部署,可直接在宿主机修改挂载的Nginx配置文件,之后执行docker compose restart nginx重启容器即可
  • 验证方式:手动在/var/www/certbot/.well-known/acme-challenge/目录下创建测试文件,直接通过HTTP访问对应路径,确认不会跳转且能正常返回文件内容即可重新执行Certbot证书申请

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:57:04