環境: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
名前から IP アドレスを取得するには が必要です。