nginx: могу ли я показать вывод команды оболочки по определенному URL?

Я не уверен, возможно ли это вообще, но могу ли я показать стандартный вывод команды linux через веб-сервер?

Команда, которую я хочу выполнить: echo 'status' | nc localhost 4730 который возвращает строку со статусом сервера заданий gearman.

$echo 'status' | nc localhost 4730
function1      0       0       0
function2      0       0       1

На моем сервере работает nginx. Я хочу открыть URL-адрес, например http://domain.tld/gearman-status и он должен вернуть текущее состояние, выполнив эту команду.

Что я должен поместить в блок местоположения nginx, чтобы сделать это?

location /gearman-status {
  ?
}

Спасибо

2 ответа

Решение

nginx отсутствует поддержка CGI, поэтому он не может выполнять скрипты напрямую. Вам нужно будет настроить сервер FastCGI и вызвать его с nginx используя fastcgi_pass в вашем location директивы. Пример такой оболочки FastCGI в вики nginx - смотрите по этой ссылке.

Вы можете просто написать небольшой PHP или Perl-файл и поместить его в требуемый путь. Этот небольшой файл выполнит нужный вам скрипт или команды и распечатает вывод. Вы можете использовать обратные кавычки `command`, чтобы сделать это.

Другие вопросы по тегам