返回 Bug 清单
BUG-0403project-13中已修复deploy-config
把 ACME 挑战路径配在 server 级 return 301 之后导致证书申请与自动续期失败(Timeout during connect)
发现:2026-10-03验证:2026-10-15置信度:85%
症状
certbot 反复报 Timeout during connect,看着像安全组/端口问题;即使确认 80 端口已放行、DNS 正确、nginx 正常,仍然失败。
根因
server 块里写了 server 级 return 301 https://$host$request_uri; 希望全站跳 HTTPS,同时把 /.well-known/acme-challenge/ 的 location 放在其后。nginx 的 server 级 return 会先于 location 匹配执行,于是挑战请求被 301 到 HTTPS,Let's Encrypt 无法在 80 端口取到验证文件。报错文案是「Timeout during connect (likely firewall problem)」,把排查方向误导到防火墙。
修复方案
把 ACME 挑战的 location 写在 server 块内部、且不要被 server 级 return 抢先:server { listen 80; server_name X; location /.well-known/acme-challenge/ { root /var/www/certbot; } location / { return 301 https://$host$request_uri; } }。签发后必须保留 80 端口的该 location,否则下次自动续期同样失败。
错误签名
certbot: Detail: Fetching http://<domain>/.well-known/acme-challenge/<token>: Timeout during connect (likely firewall problem)技术信息
来源项目
project-13
标签
certbot, ACME, nginx, 误导性报错, project-13...