在 Nginx 中,解析器指令机械地执行什么操作来避免错误和警告?

在 Nginx 中,解析器指令机械地执行什么操作来避免错误和警告?

环境:Nginx、Node.js

我读过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;
        }

    }

}

但是当我删除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/letsencrypt/live/example.com/fullchain.pem”

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

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

答案1

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

相关内容