Laravel Forge申请Let's Encrypt证书http-01挑战超时报错
故障定位
核心故障为域名配置的IPv6地址不可达导致http-01校验超时,和nginx站点配置逻辑、Laravel Octane运行状态、Forge面板签发流程均无关联。
同服务器下其他站点可正常签发证书,是因为这类站点要么没有配置AAAA类型的IPv6解析记录,要么其IPv6对应的防火墙、Web服务监听规则已经提前配置完成。
签发日志中出现的git detached HEAD提示是拉取ACME签发脚本仓库的常规操作输出,不属于错误,无需关注。
修复步骤
按优先级从高到低操作:
- 优先排查IPv6链路连通性
- 先在服务器本地执行
ip a查看网卡绑定的IPv6地址,确认和域名AAAA记录配置的2a01:4f8:141:333::84完全一致,排除解析填错的问题。 - 检查防火墙规则:注意IPv4和IPv6的防火墙规则是独立生效的,需单独确认云服务商安全组、服务器本地ufw/iptables/firewalld规则,是否放通IPv6协议下80、443端口的公网入站流量。
- 找公网支持IPv6的环境执行
curl -6 http://你的域名,确认是否能正常返回站点内容,若超时说明链路确实不通。
- 先在服务器本地执行
- 检查nginx的IPv6监听配置
打开对应站点的nginx配置文件,确认80端口的监听规则同时覆盖IPv4和IPv6,正确配置示例如下:
若缺少server { listen 80; listen [::]:80; server_name 你的域名; # 其余配置保持原有内容即可 }listen [::]:80;配置行,会导致IPv6请求到达服务器后无服务进程响应,直接触发连接超时。修改完成后执行nginx -t校验语法无报错,执行systemctl reload nginx重载配置即可。
注意:.well-known/acme-challenge/路径的校验请求由nginx直接处理,不会转发给后端的Laravel Octane进程,因此无需调整Octane相关配置。 - 临时快速修复方案
如果当前不需要使用IPv6访问站点,直接到域名DNS解析控制台删除对应的AAAA记录,等待全球解析生效后(一般1-10分钟),重新在Forge面板触发证书签发即可直接通过校验。
内容的提问来源于stack exchange,提问作者Brotzka
相关产品推荐
相关产品推荐

