ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

memcached, backend и perl fastcgi


  • To: nginx-ru@xxxxxxxxx
  • Subject: memcached, backend и perl fastcgi
  • From: "Igor Vinokurov" <zynaps@xxxxxxxxx>
  • Date: Mon, 30 Oct 2006 18:07:48 +0300
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:sender:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition:x-google-sender-auth; b=RKAHDOHM39D8NaGcrVjUEyIV3JNH8vFjTsg0ge7juWWaVCJIf1AyidUTrtuWVGtUGKyefmZoG7f8A58YNJTn2NsTkMYompT+ObL53NJkKMCmb8R4b9vU2Zzch4MVYSoY11ggKuq1J0bWihIj/fU1ymynu+MwCkWIZDylONmIUT4=

Привет.

Нужен совет бывалых по паре вопросов.

1.

Обычная задача: динамический сайт, front-end - nginx, back-end -
fastcgi на перле. Нужно кэшировать все в memcached.

Скрипты при обращении к ним отдают страницу и пишут ее в memcached,
где ее потом находит nginx при втором обращении к этой же странице.

Конфиг nginx:

   location / {
        default_type text/html; charset windows-1251;

        memcached_pass localhost:11211;
        error_page 404 = /backend/;
   }

   location /backend/ {
       # грязный хак?
        rewrite .* $request_uri;

       # список айтемов
        rewrite ^(/?.*/)$ /cgi-bin/index.pl?qs=$1? last;

       # детали айтема
        rewrite ^/item/(\d+)/$ /cgi-bin/details.pl?it=$1? last;

       # остальные - в сад
        return 404;
   }

   location /cgi-bin/details.pl {
        fastcgi_pass unix:/tmp/details.sock;

        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
   }

   location /cgi-bin/index.pl {
        fastcgi_pass unix:/tmp/index.sock;

        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
   }

Эта конструкция вполне работает. Вопрос: можно ли сделать как-то
элегантнее? Особенно волнует конструкция

       # грязный хак?
        rewrite .* $request_uri;

без которой не обойтись, поскольку после 'error_page 404 = /backend/'
$uri имеет значение /backend/. Может опытные товарищи делают как-то
иначе? Как правильно?

Будет ли лучше в скриптах писать страницу в memcached, а nginx'у
отдавать только internal redirect на нее?

2.

Как вы запускаете standalone perl fastcgi? Я использую сейчас
FCGI::ProcManager, но хочется, чтобы он все-таки отцеплялся от
терминала и висел демоном. Достаточно ли будет fork и detach?
Попробовал сделать как в Catalyst::Engine::FastCGI, но результат
нестабильный - в паре запусков из 10 скрипт молча выходит и не слушает
сокет. Magic. Посоветуйте что-нибудь? Как делаете вы?

Заранее спасибо за ответы :)

--
С уважением,
Игорь Винокуров


 




Copyright © Lexa Software, 1996-2009.