Назад | Перейти на главную страницу

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 {
  ?
}

Спасибо

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

Вы можете просто написать небольшой файл PHP или perl и поместить его по нужному пути. Этот небольшой файл выполнит нужный сценарий или команды и распечатает результат. Для этого вы можете использовать команду обратных кавычек.