Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: запуск cgi бинарника c пар аметрами через web
- To: "nginx-ru@xxxxxxxxx" <nginx-ru@xxxxxxxxx>
- Subject: Re: запуск cgi бинарника c пар аметрами через web
- From: Peter Leonov <gojpeg@xxxxxxxxx>
- Date: Sun, 29 Nov 2009 17:34:19 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to :in-reply-to:content-type:content-transfer-encoding:x-mailer :mime-version:subject:date:references; bh=1KHuEk5Tk3X0K1BeK2v9q/sqliFKhNxIl75Y0rXvZ8g=; b=Qfa8ydDF38x5V3agFfvmGQ04iWJfybM3Qc5pg5Oaqhp4559c10kniU82Fk0WfC6Aw0 BBCDzh4Es7sVKpps9kl/a5qLMIXXvG5qmXIVzCdcpBD5m+KH5A5EunO4W9TgVwqOH9w7 BBzn61DlkQT5QqT8VU84WdZJaSdLf0z/9iOJ0=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:in-reply-to:content-type :content-transfer-encoding:x-mailer:mime-version:subject:date :references; b=FWQubF5PC1svUlYQr1pN2ZNQYhDExFENd6Q1nJXplW4SSAyP4kTCzb8CvZW2FNu9ZM cWV+USRvpmZrHkJF+u3dtToWBgnNGHahYN3WyoXQJZyYkggky6xdNC3Jt6dCA+KTsBpj p9GBJBM75cP387YqH2GsZURqDPFlL2BM9C/98=
- In-reply-to: <20091129111300.GA96684@xxxxxxxxx>
- References: <16847032.20091129004401@xxxxxxxxx> <loom.20091129T002309-431@xxxxxxxxxxxxxx> <1945949778.20091129105648@xxxxxxxxx> <20091129111300.GA96684@xxxxxxxxx>
On 29.11.2009, at 14:13, Igor Sysoev <igor@xxxxxxxxx> wrote:
On Sun, Nov 29, 2009 at 10:56:48AM +0300, actionmanager@xxxxxxxxx
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 mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|