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

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.