在 Nginx 中,解析器指令機械地做什麼來避免錯誤和警告?
環境: 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 地址。