Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: memcache_key и HTTP Accept-Language
Здравствуйте, Сергей.
Хост и язык можно регэкспами через set установить
http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#set
и из эти новых переменных потом формировать $memcached_key:
set $myhost $host;
if ($host ~* "^.*\.([^.]+\.[^.]{2-4})$" ) {
set $myhost $1;
}
set $mylang "en";
if ($http_accept_language ~* "ru" ) {
set $mylang "ru";
}
$memcached_key "parked#$myhost#$mylang"
SS> Парковка доменов. Имеется маленькая кучка fastcgi бекендов, которые
SS> генерят динамику в зависимости от запрошенного HTTP Host и
SS> Accept-Language.
SS> На морде стоит nginx шестой ветки и проксирует всё подряд на бекенды.
SS> Которые либо отдают страничку из кеша, либо генерят и кладут в кеш.
SS> Так как бекенды по сравнению с nginx сильно медленные в целом и
SS> неасинхронные, хочется не проксировать *каждый* запрос на них, а
SS> задействовать http_memcached_module.
SS> Не знаю как составить ключ $memcached_key "parked#test-host.tld#ru,en"
SS> из заголовков
SS> Host: test-host.tld
SS> Accept-Language: ru-ru;q=1.0,en-us;q=0.9,*;q=0.8
SS> хост понятно, это $host. И то, от него надо откусить www. если есть.
SS> Уверен, что многие сталкивались с такой задачкой. Есть ли готовые рецепты?
SS> Писать свой сишный модуль не подходит.
SS> Решаема ли задача в таких условиях?
--
С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.
|