环境: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 地址。