在 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/讓加密/live/example.com/fullchain.pem“

resolver將 Google 的 DNS 伺服器的參考保留為我的值並避免警告很容易,但我不完全確定發生了什麼。因為我不知道該指令的作用,所以我不完全確定 Google 的 DNS 伺服器是否是正確的選擇。我相信我只需要resolver如果我也使用該proxy_pass指令,但我不完全確定這一點。

問題:解析器在做什麼以及何時調用或不調用?我知道它正在執行 DNS,但我不確定何時或為何。

答案1

您要求ssl_stapling,這需要聯絡您的 TLS 憑證中列出的 OCSP 回應者。resolver需要A從其名稱中取得 IP 位址。

相關內容