DNS 问题:NXDOMAIN 正在查找 A 来查找 www.exampl.com - 检查该域是否存在 DNS 记录

moh*_*mad 5 dns ssl nginx certbot

我将通过 certbot 为 nginx 安装 SSL

但我遇到这个错误:“DNS 问题:NXDOMAIN 正在查找www.example.com的 A - 检查该域是否存在 DNS 记录”

但是,我在 Cloudflare 中有两条 A 记录:

example.com     ip
www             ip
Run Code Online (Sandbox Code Playgroud)

我应该怎么办?

Pra*_*gan 6

当Let's Encrypt Certbot 尝试验证您的域时,如果 certbot 是从该 IP 位置运行,则它无法找到匹配的域的 IP 地址(A 记录)。

可能的解决方案1

检查A 记录的Cloudflare 代理是否已启用。如果处于开启状态,请将其关闭。通常,这是通过单击 A 记录的 DNS 页面上的橙色云图标来完成的。

可能的解决方案2

如果已经完成但您仍然遇到错误,请将A 记录的TTL(生存时间)60字段编辑为。您的域 DNS 不会传播,这可能会加快该过程。

可能的解决方案3

如果上述方法均不起作用,则 certbot 或从 certbot 到您域的 DNS 的连接出现问题。--debug-challenges在运行命令时添加以颁发 SSL。这可能会为您提供更多信息。

可能的解决方案4

最后一招是尝试手动模式。http您可以通过质询而不是模式来验证域所有权dns。请按照Certbot 文档中的说明进行操作。

但是,您可能需要将颁发的证书关联到您的 nginx 配置。找到以下配置供您参考。获得证书后,您可以轻松地使用它使您的服务/网站启动并运行。

server {
        server_name example.com;
        location / {
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80;
        server_name example.com;
    return 404; # managed by Certbot

}
Run Code Online (Sandbox Code Playgroud)