command

Директива 'command' в модуле NGINX Execute позволяет выполнять системные команды через HTTP-запросы.

Синтаксисcommand on;
По умолчаниюnone
Контекстlocation
Аргументы1

Описание

Директива 'command' настраивается внутри location block в NGINX server block и принимает один аргумент, который активирует обработчик для выполнения команд оболочки. Когда она включена (set to 'on'), она позволяет HTTP GET или POST запросам с определёнными аргументами выполнять команды оболочки на сервере. Команды разбираются из параметров запроса, в частности по шаблону 'system.run[command]'. \n\nМодуль парсит входящие запросы и извлекает команду для выполнения из URL-аргументов. Это извлечение выполняется с помощью простой функции парсинга, которая определяет команду и любые связанные параметры. После выполнения команды с помощью специальной функции исполнения результат собирается и возвращается клиенту в качестве полезной нагрузки ответа. Важно отметить, что запускаемые команды должны соответствовать правам процесса NGINX, поэтому при использовании этой функциональности следует тщательно продумывать вопросы безопасности. \n\nИз-за возможности выполнения произвольных команд рекомендуется включать директиву 'command' только в доверенных окружениях или полностью отключать её в рабочей среде. Модуль также отбрасывает команды, которые требуют взаимодействия с пользователем или являются непрерывными процессами, поскольку они не предназначены для модели HTTP request-response.

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

location / {
    root   html;
    index  index.html index.htm;
    command on;
}

Убедитесь, что выполняемые команды не требуют взаимодействия с пользователем, так как в противном случае они не будут работать корректно.

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

Помните, что права пользователя NGINX влияют на то, какие команды могут быть успешно выполнены.

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