在 Nginx 中,解析器指令会自动执行哪些操作来避免错误和警告?

sta*_*wed 5 domain-name-system nginx internal-dns

环境: Nginx、Node.js

我已阅读有关 Resolver 的 Nginx 文档,我了解它用于 DNS,并将其包含在我的配置中。然而我并不完全理解它在做什么或者何时以及为什么我需要它。

在下面的简化配置中,当我打开 nginx 和 node.js 服务器并在浏览器中请求页面时,一切都会按预期工作,并且不会引发任何警告或错误。我使用的 IP 地址resolver是 google 的公共 DNS 服务器。

http {

    resolver 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844];

    server {

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name example.com;

        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

        root /srv/example/views/public;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        location / {
            proxy_pass http://127.0.0.1:8080;
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

但是,当我删除resolver 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844];启动服务器和请求页面时,我在 error.log 中收到警告。同时,浏览器中一切正常,不会向客户端发送错误或警告。

2020/12/11 20:04:24 [警告] 1191#1191:在请求证书状态时没有定义解析器来解析 r3.o.lencr.org,响应者:r3.o.lencr.org,证书:“/etc/让加密/live/example.com/fullchain.pem“

resolver将 Google 的 DNS 服务器的引用保留为我的值并避免警告很容易,但我不完全确定发生了什么。因为我不知道该指令的用途,所以我不完全确定 Google 的 DNS 服务器是否是正确的选择。我相信我只需要resolver在我也使用该proxy_pass指令时才需要,但我并不完全确定这一点。

问题:解析器在做什么以及何时调用或不调用?我知道它正在执行 DNS,但我不确定何时或为何。

Mic*_*ton 4

您要求ssl_stapling,这需要联系您的 TLS 证书中列出的 OCSP 响应者。resolver需要A从其名称中获取 IP 地址。