Re: запуск cgi бинарника c параметрами через web
Igor Sysoev
igor на sysoev.ru
Вс Ноя 29 18:00:24 MSK 2009
On Sun, Nov 29, 2009 at 05:34:19PM +0300, Peter Leonov wrote:
> On 29.11.2009, at 14:13, Igor Sysoev <igor at sysoev.ru> wrote:
>
> > On Sun, Nov 29, 2009 at 10:56:48AM +0300, actionmanager at gmail.com
> > wrote:
> >
> >>>> как можно с помощью nginx запустить этот бин
> >>>> арник c
> >>>> параметрами через веб и получить результат ?
> >>
> >>> Используйте http://www.acme.com/software/mini_httpd/
> >>
> >> в моей ситуации будет лучше запускать бинарник через php скри
> >> пт с
> >> помощью exec, так будет экономнее по ресурсам. команду надо выпол
> >> нять
> >> до 10 раз в день, она просчитывает данные и тут же выдаёт результат.
> >>
> >> почему в nginx до сих пор нет поддержки выполнения cgi бинарников
> >> или
> >> это никому не нужно ? :)
> >
> > Потому что выполнять cgi форканьем текущего воркера, который в данный
> > момент обслуживает тысячи соединений - эта бессмысленная трата ресур
> > сов.
> > Нужно делать специальный менеджер cgi-процессов, в который проксиров
> > ать
> > запросы, что, по сути, мало чем отличается от проксирования mini_htt
> > pd.
> > Если собрать mini_httpd с NO_OPENSSL=YES, он будет занимать в памяти
> > что-то около мегабайта (в основном разделяемая libc):
> >
> > ps ax -o pid,ppid,%cpu,vsz,rss,wchan,command|egrep '(mini_httpd|PID)'
> > PID PPID %CPU VSZ RSS WCHAN COMMAND
> > 40017 40016 0.0 5864 1308 select /usr/local/sbin/mini_httpd -D -
> > C /usr/local
> > 40016 1 0.0 7068 1672 wait /bin/sh /usr/local/sbin/
> > mini_httpd_wrapper
> >
> > mini_httpd_wrapper, возможно, можно убрать. У меня Mailman проксируе
> > тся
> > в mini_httpd, запущенный с таким конфигом:
> >
> > user=www
> > host=127.0.0.1
> > port=80
> > dir=/usr/local/mailman
> > cgipat=cgi-bin/*
> > pidfile=/var/run/mini_httpd.pid
> > xrealip=127.0.0.1
> >
> > xrealip появляется в прилагаемом патче.
> > --
> > Игорь Сысоев
> > http://sysoev.ru
>
> Как раз хотел в девеле поговорить об этом.
>
> Мы все иногда грешим сиджиаем, и каждый использует что-то свое:
> apache, mini_httpd, или даже spawnfcgi+fcgiwrap. Первые два дублируют
> логику обработки HTTP. Третий же добавляет целый новый протокол. А
> главное все эти погремушки добавляют своих особенностей и глюков.
>
> Интересно то, что вместо этих товарищей будет удобно запускать еще
> один энжинкс, но с модулем для запуска CGI-программ. Можно
> использовать один и тот же бинарник энжинкса, но с разными конфигами.
То есть, предлагается проксирование, но во второй nginx, который занимается
только cgi ?
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru