memcached, backend и perl fastcgi
    Igor Vinokurov 
    zynaps at zynaps.ru
       
    Mon Oct 30 18:07:48 MSK 2006
    
    
  
Привет.
Нужен совет бывалых по паре вопросов.
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. Посоветуйте что-нибудь? Как делаете вы?
Заранее спасибо за ответы :)
-- 
С уважением,
Игорь Винокуров
    
    
More information about the nginx-ru
mailing list