upstream
Директива `upstream` определяет группу бэкенд-серверов для балансировки нагрузки.
Описание
Директива upstream в NGINX создаёт именованный блок, в котором можно определить несколько бэкенд-серверов, обрабатывающих запросы в режиме балансировки нагрузки. В пределах блока upstream можно указать данные о нескольких серверах, включая их адреса и необязательные веса. NGINX поддерживает различные методы балансировки нагрузки, такие как round-robin, least connections и IP hash, которые также могут быть настроены в контексте upstream.
Синтаксис директивы upstream позволяет указывать несколько серверов в рамках именованного контекста. Например, можно создать группу upstream с именем backend, которая включает несколько блоков server, каждый из которых представляет отдельный экземпляр приложения. Каждый сервер можно задать с его IP-адресом и необязательными параметрами, такими как max_fails и fail_timeout, чтобы управлять поведением NGINX при отказах серверов. Кроме того, вы можете настроить метод балансировки нагрузки в соответствии с потребностями вашего приложения, указав, например, least_conn, ip_hash и т.д.
Директива upstream не имеет значений по умолчанию; её необходимо явно определить в конфигурационном файле. После настройки она служит точкой ссылки для других директив, таких как proxy_pass, которые могут использовать эту определённую группу для эффективного распределения входящего трафика по указанным бэкенд-серверам.
Пример конфига
upstream backend {
server backend1.example.com;
server backend2.example.com weight=2;
server backend3.example.com max_fails=3 fail_timeout=30s;
}Убедитесь, что блок upstream определён в контексте http, поскольку он недопустим в контекстах server или location.
Будьте осторожны с health checks и логикой failover, так как неправильная конфигурация может привести к отправке трафика на неотзывчивые серверы.
Weighting в upstream blocks влияет на распределение нагрузки; убедитесь, что оно соответствует вашим ожиданиям по управлению нагрузкой.