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

WordPress站点Nginx下.well-known/acme-challenge返回404致SSL续期失败

问题原因

你遇到的404问题是由以下几个配置遗漏/冲突导致的:

  • 重复定义了.well-known路径的匹配规则,多余的正则匹配规则可能干扰优先级判断
    你的配置里同时存在location ~ /.well-known和location ^~ /.well-known/acme-challenge/两个规则,虽然理论上^~前缀匹配优先级更高,但多余的规则完全可以删除避免冲突
  • .well-known/acme-challenge匹配块缺少显式的root声明和目录访问逻辑
    虽然全局配置了root,但显式在acme挑战路径的location块里声明root可以避免继承异常,同时你当前的配置没有处理目录访问的回退逻辑
  • 路径匹配规则没有覆盖不带末尾斜杠的/.well-known/acme-challenge请求
    你当前的location ^~ /.well-known/acme-challenge/只匹配带末尾斜杠的路径前缀,不带斜杠的路径会落入location /的规则,被转发给WordPress处理返回自定义404

修复方案

你可以把现有两个和.well-known相关的location块删除,替换为如下配置:

location ^~ /.well-known/acme-challenge/ {
    root /var/www/wordpress;
    allow all;
    default_type "text/plain";
    try_files $uri $uri/ =404;
    autoindex off;
    # 跳过所有缓存规则避免干扰
    fastcgi_cache_bypass 1;
    fastcgi_no_cache 1;
}
# 处理不带斜杠的acme-challenge请求,自动重定向到带斜杠的路径
location = /.well-known/acme-challenge {
    return 301 /.well-known/acme-challenge/;
}

如果使用Certbot的webroot模式续期,要确认续期命令里的--webroot-path参数值为/var/www/wordpress,和配置里的root保持一致。

额外检查项

修改配置重载nginx之前,先确认以下权限配置正确:

  • 确认/var/www/wordpress/.well-known/acme-challenge目录的所有者和nginx运行用户一致(通常是www-data),权限至少为755
  • 确认目录下的文件权限至少为644,nginx运行用户有可读权限
  • 修改配置后执行nginx -t验证配置无语法错误,再执行systemctl reload nginx重载配置生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:48:04