perl

Директива 'perl' позволяет использовать Perl-скрипты внутри NGINX для обработки запросов. — NGINX HTTP Core

perl
locationlimit_except
Синтаксисperl subroutine_name;
По умолчаниюnone
Контекстlocation, limit_except
МодульNGINX HTTP Core
Аргументы1

Описание

Директива 'perl' позволяет встраивать Perl-код непосредственно в конфигурации NGINX для манипуляции запросами по мере их прохождения через сервер. Определяя Perl subroutine, эта директива обеспечивает большую гибкость и контроль при обработке запросов — например, изменение заголовков запросов, генерация динамических ответов или реализация пользовательской логики на основе параметров запроса. Директива может принимать один аргумент, который обычно указывает имя Perl subroutine, которая должна быть выполнена. Такая интеграция особенно полезна для продвинутой маршрутизации, изменения контента или реализации сложной логики приложения без накладных расходов, связанных с внешними скриптами или приложениями. При настройке Perl subroutine выполняется для каждого запроса, соответствующего заданному контексту (location или limit_except), что делает её мощным инструментом для окружений, требующих динамического поведения в зависимости от входящих запросов. Модель обработки допускает синхронное выполнение, то есть пока запрос обрабатывается, другие запросы могут не обрабатываться до завершения выполнения Perl-кода. Это может повлиять на производительность при неправильном управлении, особенно при высокой нагрузке. Кроме того, любые ошибки, генерируемые Perl-кодом, могут привести к ответу 500 Internal Server Error, поэтому важно реализовать корректную обработку ошибок внутри Perl-скрипта.

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

location /example {
    perl my_perl_handler;
}

Убедитесь, что модуль Perl установлен и правильно настроен в NGINX.

Учтите влияние на производительность при использовании Perl-скриптов в высоконагруженных средах, так как они могут блокировать выполнение.

Убедитесь, что имя subroutine совпадает с именем, определённым в вашем Perl-коде.