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.