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`, чтобы сделать это.