![Что механически делает директива resolver в Nginx, чтобы избежать ошибок и предупреждений?](https://rvso.com/image/760956/%D0%A7%D1%82%D0%BE%20%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82%20%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%B0%20resolver%20%D0%B2%20Nginx%2C%20%D1%87%D1%82%D0%BE%D0%B1%D1%8B%20%D0%B8%D0%B7%D0%B1%D0%B5%D0%B6%D0%B0%D1%82%D1%8C%20%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA%20%D0%B8%20%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B9%3F.png)
Среда:Nginx, Node.js
Я прочиталДокументация Nginx по Resolver, я понимаю, что он используется для DNS, и я включаю его в свою конфигурацию. Однако я не совсем понимаю, что он делает или когда и зачем он мне нужен.
В упрощенной конфигурации ниже, когда я включаю серверы nginx и node.js и запрашиваю страницы в браузере, все работает как и ожидалось, и никаких предупреждений или ошибок не выдается. IP-адреса, которые я использую, resolver
являются публичными DNS-серверами Google.
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"
Достаточно просто сохранить ссылку на DNS-серверы Google в качестве моего resolver
значения и избежать предупреждения, но я не совсем уверен, что происходит. Поскольку я не знаю, что делает эта директива, я не совсем уверен, являются ли DNS-серверы Google правильным выбором. Я считаю, что мне нужно только resolver
если я также использую proxy_pass
директиву, но я не совсем уверен в этом.
Вопрос:Что делает resolver и когда он вызывается или не вызывается? Я понимаю, что он выполняет DNS, но я не уверен, когда и почему.
решение1
Вы запросили ssl_stapling
, что требует обращения к ответчику OCSP, указанному в вашем сертификате TLS. A resolver
необходимо для получения IP-адреса из его имени.