Использование NGINX для запуска процесса при запросе URL-адреса?

Предполагая, что процесс не запущен с самого начала; можно ли запустить процесс при первом посещении URL-адреса браузером, а затем убедиться, что браузер перенаправляется на тот же запрошенный URL-адрес (который теперь имеет запущенный процесс...)?

Причина, по которой я спрашиваю, заключается в том, что у меня есть вики на стороне сервера, написанная на node.js, которую я хотел бы запустить во многих экземплярах, но она работает на сервере с очень ограниченными ресурсами (Raspberry pi), и я боюсь если я запущу все вики-процессы одновременно, у меня не хватит памяти для их запуска.

Я также планирую в конечном итоге иметь задание cron, которое проверяет, использовались ли они, и закрываю их.


person leeand00    schedule 20.08.2014    source источник


Ответы (1)


Раньше большинство веб-серверов поддерживали CGI, который в основном просто отправляет данные запроса в сценарий, принимает ответ и отправляет его обратно клиенту. Nginx не поддерживает CGI напрямую, но поддерживает FastCGI, и кто-то сделал код, который делает то, что вы хотите , эффективно оборачивающий CGI в FastCGI.

Однако я думаю, что вы задаете неправильный вопрос. Ваше фактическое приложение работает в Node.js. Почему вы хотите запускать много экземпляров? Запуск их всех сразу или в шахматном порядке вряд ли повлияет на использование вашей памяти. Они будут занимать память при запуске, независимо от того, когда вы их запустили. Учтите, что вам, вероятно, нужен только один из этих экземпляров.

person Brad    schedule 20.08.2014
comment
Что ж, у меня есть файловая система вики на основе флэш-памяти, которую я храню в качестве справочника по языкам программирования, API и другим темам и т. д. Каждый из них находится в своем собственном файле HTML, но они часто ссылаются друг на друга через ссылки. Это позволяет мне разделять темы, но позволяет мне ссылаться на ссылки, где два API могут пересекаться или использоваться вместе; поэтому я могу поместить фактический текст учебника или инструкций в одну вики API и поместить ссылку на ту же информацию в другую. - person leeand00; 20.08.2014
comment
@ leeand00 Как это связано с количеством экземпляров вашего приложения? На самом деле, какое это имеет отношение к Node.js? Мне кажется, что все, что вам нужно, это правильная конфигурация Nginx. - person Brad; 20.08.2014
comment
Таким образом, я не повторяюсь, но я все еще могу найти информацию, когда ищу ее в вики по API или теме. Но если я запихну всю информацию в единую вики, будет большая каша. Мне не нужно, чтобы все они работали одновременно, мне нужны только те, на которые я смотрю. Я могу запускать не более 3 вики-приложений одновременно. - person leeand00; 20.08.2014
comment
Извините, посмотрите мои комментарии выше... и да, вы правы, это не имеет ничего общего с node.js - person leeand00; 20.08.2014
comment
Какое приложение вы используете для запуска этой вики? Это то, что вы написали или где-то нашли? Вы хотите сказать, что каждой вики нужен свой сервер приложений? Из того, что вы сказали в своем комментарии, похоже, что вы просто обслуживаете статический HTML. - person Brad; 20.08.2014
comment
Это tiddlywiki, есть самоизменяющаяся версия файла .html и серверная версия в node.js. - person leeand00; 20.08.2014
comment
В любом случае, режим CGI вам не поможет, так как я сомневаюсь, что TiddlyWiki понравится быть CGI. Вам придется написать свой собственный демон, который запускает процесс по запросу, ждет его запуска, а затем передает ему данные запроса и данные ответа от него. - person Brad; 20.08.2014
comment
Почему вы сомневаетесь, что ему понравится компьютерная графика? - person leeand00; 20.08.2014
comment
@leeand00 Приложения Node.js обычно не говорят на языке CGI... вместо этого они используют HTTP. - person Brad; 20.08.2014