break

Директива 'break' останавливает обработку текущего location и предотвращает дальнейшую обработку блоков rewrite или location. — NGINX HTTP Core

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

Описание

Директива 'break' используется внутри блоков location или if в конфигурации NGINX, чтобы прекратить оценку всех последующих правил rewrite или вложенных блоков location. При срабатывании она фактически изменяет поток обработки запроса, позволяя администраторам контролировать, должен ли запрос продолжать обработку другими правилами или обработчиками. Эта директива полезна для реализации условной логики на основе определённых критериев, таких как состояние URI или параметры запроса. Когда директива 'break' встречается во время обработки запроса, сервер NGINX перестаёт оценивать любые последующие директивы rewrite, которые следуют за ней в том же контексте. После вызова 'break' NGINX продолжает обработку текущего блока конфигурации, возможно пропуская другие определённые поведения или обработчики, которые могут повлиять на текущий запрос. Она действует как резкое завершение обработки в контролируемой форме, что позволяет упростить и прояснить сложные настройки NGINX. Важно отметить, что директива 'break' не возвращает значений и не принимает параметров. Это строго команда, которая изменяет поток управления. Для её корректного использования в файле конфигурации не требуются прямые аргументы или выражения, что делает её реализацию простой. Однако она в основном применима там, где могут существовать несколько вложенных директив, например в сложных сценариях сопоставления location.

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

location /example {
    if ($arg_param = 'stop') {
        break;
    }
    # Further processing can go here
}

Использование 'break' внутри вложенных блоков if может привести к сложному потоку управления, который трудно отлаживать.

Директива 'break' не прекращает обработку всей конфигурации сервера, а только текущий цикл запроса.

Размещение 'break' в неожиданном месте или контексте может привести к непреднамеренному поведению при обработке запросов.