server_redirect

Директива `server_redirect` позволяет динамически перенаправлять входящие запросы на указанные серверы на основе настраиваемых правил.

Синтаксисserver_redirect server_name [condition];
По умолчаниюnone
Контекстserver
Аргументы1-2

Описание

Директива server_redirect в NGINX используется для перенаправления запросов с одного сервера на другой на основе заданных условий. Эта директива может принимать один или два аргумента; первый — это имя целевого сервера, на который будет перенаправлен запрос, а второй — необязательное условие, которое определяет, когда должно происходить это перенаправление, что полезно для динамических или условных перенаправлений на основе параметров запроса или заголовков.

При настройке директива обрабатывает входящие запросы, оценивая определённые правила. При совпадении она может перенаправить запрос на указанный целевой сервер с помощью внутренних механизмов NGINX. Также включенная опция schedule_redirect может помочь контролировать момент выполнения перенаправления, обеспечивая дополнительную гибкость в управлении трафиком сервера. Эта директива фактически позволяет создавать более адаптивные и отзывчивые конфигурации серверов, перенаправляя трафик по мере необходимости без необходимости внесения дополнительных изменений в инфраструктуру.

Модуль NGINX затем опирается на несколько подпрограмм, определённых в его C-коде, которые управляют обработкой этих правил и инициируют соответствующие перенаправления на основе содержания и контекста запроса. Это может включать работу с переменными, которые хранят исходный запрошенный хост, позволяя реализовывать более сложные сценарии перенаправления, зависящие от источника запроса.

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

http {
    server {
        listen 80;
        server_name example.com;

        # Redirect all requests to another server unconditionally.
        server_redirect newserver.com;

        location / {
            proxy_pass http://newserver.com;
        }
    }

    server {
        listen 80;
        server_name newserver.com;

        # Retrieve the original host header in responses.
        add_header x-original-host $server_redirect_original_host;

        location / {
            proxy_pass http://upstream.com;
        }
    }
}

Убедитесь, что используемые имена серверов корректно определены в конфигурации NGINX, чтобы избежать неверной маршрутизации.

Для условного перенаправления должны быть заранее определены соответствующие переменные; иначе сервер не перенаправит, как ожидается.

Имейте в виду, что использование этой директивы при неправильной конфигурации может привести к бесконечному циклу перенаправлений. Всегда тщательно тестируйте условия.

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