jdomain

Директива 'jdomain' позволяет выполнять асинхронное разрешение доменных имен для конфигураций upstream server в NGINX.

Синтаксисjdomain domain_name [options];
По умолчаниюnone
Контекстupstream
Аргументы1+

Описание

Директива 'jdomain' позволяет NGINX использовать доменное имя для определений upstream server, обеспечивая динамическое разрешение доменных имен. Эта возможность делает конфигурации upstream устойчивыми к обновлениям DNS, гарантируя, что входящие запросы могут быть направлены на правильный backend-сервер на основе актуального результата разрешения DNS. Когда запрос направлен к jdomain upstream, проверяется, прошел ли указанный интервал с момента последнего разрешения DNS; если прошел, выполняется новый DNS-запрос. Это устраняет необходимость периодических проверок DNS и вместо этого запускает разрешение по требованию.

Уникальная особенность директивы jdomain — её гибкость в обработке нескольких upstream и в комбинировании с другими upstream директивами. Пользователи могут определить несколько директив 'jdomain', директив 'server' и правил load balancing внутри одного upstream block. Однако при указании алгоритмов load balancing требуется осторожность: любые нестандартные алгоритмы должны предшествовать директиве jdomain в upstream block, чтобы предотвратить runtime crashes. Кроме того, поскольку разрешение DNS происходит асинхронно, запросы, направленные к jdomain upstream, могут столкнуться с единичными ошибками, если конфигурация upstream неожиданно изменится во время DNS-запросов, что подчёркивает важность аккуратного управления состояниями upstream.

Пример конфига

resolver 8.8.8.8;  

upstream backend {  
    jdomain example.com;  
    jdomain anotherdomain.com port=8080;  
}

Алгоритмы балансировки нагрузки должны быть указаны до директивы jdomain, чтобы избежать аварий во время выполнения.

Асинхронное разрешение DNS может привести к единичным сбоям, если состояния upstream изменяются в процессе обработки запроса.

Убедитесь, что resolver определён в контексте HTTP перед использованием jdomain.

← Ко всем директивам