Как запустить bash скрипт из nginx?

Задача такова — по некоторому запросу вида example.org/do_the_job надо запустить на сервере фронтенда bash скрипт.
Все варианты решения найденные в гугле сводятся к двум методам:
1. установить на сервер Lua и LuajIT и использовать HttpLuaModule для запуска О_о
2. установить еще один http сервер, способный выполнить CGI скрипт, способный запустить команду bash и передавать запрос ему о_О

На фронтенде сейчас установлен лишь nginx. Варианты доустановить apache/php/… не слишком хороши.

upd. Решение нашлось — nginx скомпилирован с HttpPerlModule.
Добавил еще один location по документации — nginx.org/ru/docs/http/ngx_http_perl_module.html — и все заработало.
  • Вопрос задан
  • 14837 просмотров
Пригласить эксперта
Ответы на вопрос 5
WildWolf
@WildWolf
Ну, я вижу два вменяемых варианта:
Первый:
У жинкса есть модуль перла, он чуть ли не дефолтовый. Прям в конфиге можно сделать exec нужного скрипта. --with-http_perl_module вам поможет.
Второй вариант — вообще смак. Сделать наш башскрипт демоном. И пинать его по протоколу CGI.

Вопрос в другом — не будет ли это все security hole?
Ответ написан
kamiram
@kamiram
например сделать ему обертку из cgi (на том же sh)
Ответ написан
@mr_idiot
Вообще nginx архитектурно и по соображениям безопасности не поддерживает работу по cgi. Поэтому желательно-таки использовать FastCGI или http.
Ответ написан
BuriK666
@BuriK666 Куратор тега Nginx
Компьютерный псих
Как и писали выше делайте FastCGI.
Если будете использовать perl, учтите что в этом скрипте не должно быть блокирующих операций.
Ответ написан
VBart
@VBart
Для этих и многих других целей идеально подходит uWSGI.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы