Перейти к содержанию

upstream-dynamic: Динамическое разрешение DNS для upstream в NGINX

Установка

Вы можете установить этот модуль в любой дистрибутив, основанный на RHEL, включая, но не ограничиваясь:

  • RedHat Enterprise Linux 7, 8, 9 и 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-upstream-dynamic
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-upstream-dynamic

Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:

load_module modules/ngx_http_upstream_dynamic_servers_module.so;

Этот документ описывает nginx-module-upstream-dynamic v0.4.0, выпущенный 15 марта 2016 года.


Модуль nginx для разрешения доменных имен внутри upstream и поддержания их в актуальном состоянии.

По умолчанию сервера, определенные в upstream NGINX, разрешаются только при запуске NGINX. Этот модуль предоставляет дополнительный параметр resolve для определений server, который можно использовать для асинхронного разрешения доменных имен upstream. Это позволяет поддерживать определение upstream в актуальном состоянии в соответствии с TTL DNS каждого доменного имени. Это может быть полезно, если вы хотите использовать upstream для динамических типов доменных имен, которые могут часто менять IP-адреса.

Этот модуль также позволяет NGINX запускаться, если upstream содержит недействительное доменное имя, которое больше не разрешается. По умолчанию NGINX не сможет запуститься, если сервер upstream содержит неразрешаемое доменное имя. С этим модулем NGINX все равно может запуститься с недействительными доменными именами, но ошибка будет зафиксирована в журнале, и неразрешаемые доменные имена будут помечены как недоступные.

Использование

Используйте определение server внутри ваших upstream и укажите параметр resolve.

Примечание: resolver должен быть определен на уровне http в конфигурации NGINX для работы resolve.

http {
  resolver 8.8.8.8;

  upstream example {
    server example.com resolve;
  }
}

Директивы

server

Синтаксис: server address [parameters]; Контекст: upstream

Определяет сервер для upstream. Модуль добавляет возможность указывать параметр resolve. Когда он указан:

  • Доменные имена будут разрешаться на постоянной основе и поддерживаться в актуальном состоянии в соответствии с TTL каждого доменного имени.
  • Неразрешаемые доменные имена считаются нефатальными ошибками (но фиксируются в журнале). NGINX может запуститься, если доменное имя не может быть разрешено, но сервер помечается как недоступный.

Следующие параметры могут быть использованы (см. документацию по server в NGINX для подробностей):

weight=number max_fails=number fail_timeout=time backup down resolve

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-upstream-dynamic.