resolver
Директива 'resolver' в NGINX обеспечивает разрешение DNS для проксированных запросов с использованием внешнего resolver.
Описание
Директива 'resolver' настраивает DNS-резолвер, который NGINX использует для разрешения имён хостов при обработке клиентских запросов. Эта директива может принимать один или несколько адресов DNS-серверов, которые можно указать как в формате IPv4, так и в формате IPv6. resolver может быть задан в контексте main или server, и NGINX будет использовать определённый резолвер для разрешения любых имён хостов, указанных в директивах, таких как 'proxy_pass' или 'fastcgi_pass'. Когда указано несколько резолверов, NGINX будет пытаться разрешать имена хостов, обращаясь к ним в указанном порядке. Если первый resolver не отвечает, NGINX перейдёт к следующему. Это обеспечивает надёжность и гибкость в разрешении DNS, особенно в средах, где важна избыточность.
Кроме того, директива 'resolver' может принимать дополнительные параметры, такие как 'valid' и 'timeout', которые контролируют, как долго разрешённый адрес остаётся действительным и длительность таймаута для DNS-запросов соответственно. Эти параметры помогают тонко настроить поведение процесса разрешения DNS, обеспечивая высокую доступность и производительность приложений, которые полагаются на разрешение имён хостов во время выполнения. Если resolver не задан, а требуется разрешение имени хоста, NGINX вернёт ошибку, что делает эту директиву критически важной для конфигураций, зависящих от динамических бекендов.
Пример конфига
resolver 8.8.8.8 8.8.4.4;
location /app {
proxy_pass http://mybackend;
}Убедитесь, что указанные адреса резолвера доступны с вашего сервера NGINX; в противном случае разрешение имён не будет работать.
Использование плохо настроенного DNS-резолвера может привести к задержкам и замедлению отклика вашего приложения.
Если не задан резолвер по умолчанию и вы попытаетесь разрешить имя хоста, NGINX вернёт ошибку '502 Bad Gateway'.