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