return

Директива `return` немедленно возвращает клиенту указанный HTTP-код состояния или ответ с перенаправлением. — NGINX HTTP Core

return
serverlocationif in serverif in location
Синтаксисreturn code | code url;
По умолчаниюnone
Контекстserver, location, if in server, if in location
МодульNGINX HTTP Core
Аргументы1-2

Описание

Директива `return` — универсальная функция NGINX, которая позволяет отправлять HTTP-ответы из разных контекстов внутри server or location block. Она может принимать один или два аргумента: первый аргумент задаёт HTTP-код состояния (например, 200, 404, 301), а необязательный второй аргумент может содержать URL для перенаправления. При выполнении директива немедленно завершает обработку запроса, отбрасывая любые последующие шаги конфигурации или обработки. Это полезно для упрощения ответов без необходимости сложных конфигураций или логики. В случае, когда указан только код состояния без URL, клиенту возвращается простой ответ с указанным кодом. Если требуется перенаправление, можно указать код состояния, например `301` (Перемещено навсегда), вместе с новым URL. Эта инструкция обрабатывается в заданном контексте, но также может объединяться с другими директивами при использовании в условных конструкциях (т.е. внутри `if`-блоков). Комбинирование `return` внутри условного блока позволяет получить более динамичное поведение ответов в зависимости от параметров запроса или заголовков.

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

location /old-path {
    return 301 https://example.com/new-path;
}

location /not-found {
    return 404;
}

Если использовать `return` внутри директивы `if`, это может привести к непредвиденному поведению, если конструкция не продумана. Будьте осторожны с обработкой `if`-блоков в NGINX.

При использовании перенаправления с относительным путём убедитесь, что URL начинается с `http://` или `https://`, чтобы избежать нежелательного поведения, поскольку относительные пути могут приводить к локальным перенаправлениям, сбивающим клиентов с толку.