Nginx

在 Nginx 中,解析器指令機械地做什麼來避免錯誤和警告?

  • December 12, 2020

環境: 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;
       }

   }

}

但是,當我刪除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

$$ warn $$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,但我不確定何時或為什麼。

您要求ssl_stapling,這需要聯繫您的 TLS 證書中列出的 OCSP 響應者。需要Aresolver從其名稱中獲取 IP 地址。

引用自:https://serverfault.com/questions/1045903