Re: запуск cgi бинарника c параметрами через web

Peter Leonov gojpeg на gmail.com
Вс Ноя 29 17:34:19 MSK 2009


On 29.11.2009, at 14:13, Igor Sysoev <igor на sysoev.ru> wrote:

> On Sun, Nov 29, 2009 at 10:56:48AM +0300, actionmanager на 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-программ. Можно  
использовать один и тот же бинарник энжинкса, но с разными конфигами.

Тут важным мне кажется то, что всеми делами занят наш любимый и  
надежный друг, а не кто-то там еще. Даже не представляю свою работу  
без энжи. Спасибо вам, Игорь :)

С уважением,
Петр.

P.S. И патчить ничего не придется ;) 


Подробная информация о списке рассылки nginx-ru