Re: memcache_key и HTTP Accept-Language

Михаил Монашёв postmaster at softsearch.ru
Wed Dec 3 22:12:21 MSK 2008


Здравствуйте, Сергей.

Хост и язык можно регэкспами через 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 at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.






More information about the nginx-ru mailing list