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

使用Traefik+Let's Encrypt遇DNS问题:查询example.com的A记录时出现NXDOMAIN

解决Traefik ACME HTTP挑战的NXDOMAIN问题

我之前在Docker Swarm+Traefik的环境里也碰到过几乎一模一样的DNS问题,给你梳理几个关键排查步骤,应该能定位到原因:

1. 先确认DNS记录真的生效了(别忽略DNS缓存!)

NXDOMAIN本质是域名解析不到任何记录,所以先排除DNS本身的问题:

  • 用公共DNS服务器直接查询,避免本地缓存干扰:
    dig example.com @8.8.8.8
    dig www.example.com @8.8.8.8
    
    确保返回的A记录是你Swarm集群的公网IP(如果是多节点集群,应该指向集群的负载均衡IP,比如DigitalOcean的负载均衡器)。
  • 用dig example.com +trace跟踪解析链路,确认从根域到权威DNS(DigitalOcean的DNS服务器)都返回了正确的A记录。
  • 别忘了DNS有TTL缓存,刚修改的记录可能需要5-10分钟甚至更久才能全球同步,别刚改完就测试。

2. 检查Traefik的HTTP入口点是否正确暴露

ACME HTTP挑战需要Let's Encrypt能访问到你Traefik的80端口,所以要确保:

  • 在Traefik的Swarm服务配置里,80端口已经正确绑定到主机:
    services:
      traefik:
        ports:
          - "80:80"
          - "443:443"
        # 如果用Swarm路由网格,确保mode是ingress(默认),且节点的80端口没被防火墙挡住
    
  • 你的服务器防火墙(比如ufw、iptables)已经开放80和443端口,DigitalOcean的防火墙规则也要允许这两个端口的入站流量。

3. 核对Traefik的ACME配置细节

确保你的toml配置里,HTTP挑战和入口点的关联是正确的:

[entryPoints]
  [entryPoints.http]
    address = ":80"  # 必须监听80端口
  [entryPoints.https]
    address = ":443"

[acme]
  email = "your-email@example.com"
  storage = "/acme.json"
  entryPoint = "https"
  [acme.httpChallenge]
    entryPoint = "http"  # 这里必须指向刚才的HTTP入口点,不能写错!

如果用了自定义证书解析器(resolver),还要确保路由规则里关联了这个解析器:

# 你的业务服务labels里要加
labels:
  - "traefik.http.routers.my-service.rule=Host(`example.com`) || Host(`www.example.com`)"
  - "traefik.http.routers.my-service.tls=true"
  - "traefik.http.routers.my-service.tls.certresolver=default"  # 和acme配置对应

4. 检查Swarm网络和服务可达性

  • 确保你的业务服务和Traefik服务在同一个overlay网络里,不然Traefik无法转发请求到业务服务(不过这个主要影响正常访问,挑战阶段可能先看80端口是否能访问)。
  • 直接用公网IP访问http://<你的公网IP>/.well-known/acme-challenge/,看看Traefik是否返回404(正常,因为还没生成挑战文件),如果返回连接超时,说明80端口根本没对外开放。

5. 查看Traefik日志找细节

最后,一定要看Traefik的服务日志,里面有最准确的错误信息:

docker service logs -f traefik  # 替换成你的Traefik服务名

日志里会显示ACME挑战的完整流程,比如是Let's Encrypt无法解析你的域名,还是挑战请求到达Traefik后处理出错,这些细节能帮你快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:52:46