Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Проблема с perl (внешним на сокете).
- To: nginx-ru@xxxxxxxxx
- Subject: Re: Проблема с perl (внешним на сокете).
- From: Тен Костя <Kostya@xxxxxxxxx>
- Date: Sat, 07 Jun 2008 10:43:58 +0400
- In-reply-to: 1630000000304830119
- References: 1630000000304830119
use FCGI;
Что не поможет?
> В настоящий момент нет правильного перла для nginx такова как php и
> приходится использоватьhttp://www.nginx.eu/nginx-fcgi/nginx-fcgi.txtвзятого
> сhttp://www.nginx.eu/nginx-fcgi.htmlон хорошо работает но для серьезной
> нагрузки негодится к сожелению.Мы используем его для отрисовки самописной
> статы по серву, которая рисуетсяhttp://www.fi.muni.cz/~kas/mrtg-rrd/Возникла
> проблема толи nginx-fcgi толи самого nginx для вызова скрипта используется
> url видаhttp://192.168.0.1/stat/rrd/192/net/index.cgi/192.html
> гдеhttp://192.168.0.1/stat/rrd/192/net/index.cgi имя скрипта,а /192.html это
> параметры но nginx ищетhttp://192.168.0.1/stat/rrd/192/net/index.cgi/192.html
> ненаходит его и возвращает 404.Пока сделал
> так_________________________________________________________________________
> location ~ /index.cgi/ { fastcgi_pass
> unix:/var/run/nginx-fcgi.sock;## fastcgi_index
> index.cgi; include
> /usr/local/nginx/conf/fastcgi.conf; fastcgi_param
> SCRIPT_FILENAME /home/htdocs$fastcgi_script_name;
> }_________________________________________________________________________где
> fastcgi.conf:fastcgi_connect_timeout 30;fastcgi_send_timeout
> 180;fastcgi_read_timeout 180;fastcgi_buffer_size 32k;fastcgi_buffers 4
> 32k;fastcgi_busy_buffers_size 32k;fastcgi_temp_file_write_size
> 32k;fastcgi_intercept_errors on;fastcgi_param QUERY_STRING
> $query_string;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param
> CONTENT_LENGTH $content_length;fastcgi_param DOCUMENT_URI
> $document_uri;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param
> GATEWAY_INTERFACE CGI/1.1;fastcgi_param SERVER_SOFTWARE
> nginx/$nginx_version;fastcgi_param REMOTE_ADDR
> $remote_addr;fastcgi_param REMOTE_PORT $remote_port;fastcgi_param
> SERVER_ADDR $server_addr;fastcgi_param SERVER_PORT
> $server_port;fastcgi_param SERVER_NAME $server_name;fastcgi_param
> SCRIPT_NAME $fastcgi_script_name;fastcgi_param SERVER_PROTOCOL
> $server_protocol;fastcgi_param DOCUMENT_ROOT $document_root;fastcgi_param
> REQUEST_URI $request_uri;# PHP only, required if PHP was built with
> --enable-force-cgi-redirect_________________________________________________________________________и
> внес фиксы в nginx-fcgi if ($req_params{SCRIPT_FILENAME}=~
> /^(.*index.cgi).*/) { $req_params{SCRIPT_FILENAME}=$1;}и
> $ENV{PATH_INFO}="http://$req_params{SERVER_NAME}$req_params{REQUEST_URI}";__________________________________________________________________________Без
> этой переменной окружения модуль CGI неработает. Кроме того другие нужные
> переменные могут отсутствовать.Вот перечень того что
> передается:CONTENT_LENGTH=""CONTENT_TYPE=""DOCUMENT_ROOT="/home/htdocs"DOCUMENT_URI="/cgi-bin/index2.cgi"FCGI_ROLE="RESPONDER"GATEWAY_INTERFACE="CGI/1.1"HTTP_ACCEPT="text/html,
> application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg,
> image/gif, image/x-xbitmap, */*;q=0.1"HTTP_ACCEPT_CHARSET="iso-8859-1, utf-8,
> utf-16, *;q=0.1"HTTP_ACCEPT_ENCODING="deflate, gzip, x-gzip, identity,
> *;q=0"HTTP_ACCEPT_LANGUAGE="ru-RU,ru;q=0.9,en;q=0.8"HTTP_CACHE_CONTROL="no-cache"HTTP_CONNECTION="Keep-Alive,
> TE"HTTP_HOST="192.168.0.1"HTTP_TE="deflate, gzip, chunked, identity,
> trailers"HTTP_USER_AGENT="Opera/9.25 (Windows NT 5.2; U;
> ru)"PATH_INFO="http://max/cgi-bin/index2.cgi"QUERY_STRING=""REDIRECT_STATUS="200"REMOTE_ADDR="192.168.0.1"REMOTE_PORT="4714"REQUEST_METHOD="GET"REQUEST_URI="/cgi-bin/index2.cgi"SCRIPT_FILENAME="/home/htdocs/cgi-bin/index2.cgi"SCRIPT_NAME="/cgi-bin/index2.cgi"SERVER_ADDR="192.168.106.128"SERVER_NAME="max"SERVER_PORT="80"SERVER_PROTOCOL="HTTP/1.1"SERVER_SOFTWARE="nginx/0.6.31"_______________________________________________________________________________________________В
> апаче такой проблемы не возникало и испотльзовать слеш вместо "?"для
> передачи параметров скрипту невозбранялось.Собственно вопрос как сделать это
> красивее и правильнее.Еще у php и perl есть проблемка, если перейти по
> сыслкеhttp://192.168.0.1/stat/rrd/192/net без слеша на концето происходит
> редирект на первую запись в директиве server_name тоесть поведение
> аналогичное включенной апачевскойUseCanonicalName, а если ссылка со слешем на
> конце то запускается скрипт http://192.168.0.1/stat/rrd/192/net/ index.php
> или index.pl соответственно.От этого помогло server_name_in_redirect off;Так
> же хочется узнать с какими опциями оптимизации лучше собирать npinx и phpпока
> испозьзую:CC="gcc" \OPTIM="-O3 -pipe -fno-exceptions -funroll-loops
> -ffast-math -funroll-loops -march=athlon64 -msse3" \CFLAGS="-O2 -pipe"
> \INCLUDES="-I/usr/local/include"Система FreeBSD 7.0-RELEASE как х86 так и
> amd64 ...Внимание - использовать перл как описано выше настоятельно
> нерекомендуется, по причине запуска от пользователя root.И быстродействие у
> него слобовато, при запуске теста начинает сыпать в лог2008/06/04 20:20:07
> [crit] 859#0: *129 connect() to unix:/var/run/nginx-fcgi.sock failed (2: No
> such file or directory) while connectingto upstream, client: 192.168.106.128,
> server: max.mp.farlep.net, request: "GET /stats/index.pl HTTP/1.1", upstream:
> "fastcgi://unix:/var/run/nginx-fcgi.sock:", host: "192.168.106.128"С
> уважением Max.maxhl@xxxxxxxxxxxxxx 71006063
--
Тен Костя
|