Re: GET запросы в memcache

Sergey Shepelev temotor at gmail.com
Fri Dec 19 21:24:08 MSK 2008


2008/12/18 Andrey P <andreyp.kt at gmail.com>:
> Приветствую!
>
> При обращении к memcache nginx запрашивает данные по  ключу:
> /search/abc/?lang=ru&q=%25D0%259C&type=person , php же сохраняет
> страницу с ключом: /search/abc/?lang=ru&q=%D0%9C&type=person (ключ
> берётся из $_SERVER['REQUEST_URI']). Собственно кэш перестаёт
> работать.
> Как это можно исправить? Заранее благодарен!

Нужно поправить php скрипт так, чтоб он клал данные в ключ
/search/abc/?lang=ru&q=%25D0%259C&type=person

а потом придёт злой школьник и сделает запрос длиннее 256 символов.
Ваш похапэ попытается положить это в мемкеш и свалится.
Эт я к тому, что ключом мемкеша должно быть нечто короткое. Например,
хэш от URI.

>
>
>  Конфин nginx'a
>  set $backend 1;
>
>        if ($uri !~ \.) {
>            rewrite ^(.+)$ /index.php break;
>        }
>
>        if ($uri ~ \.(gif|jpg|jpeg|png|js|css)$) {
>            set $backend 0;
>        }
>
>        location / {
>            if ($http_cookie ~* "session=([^;]+)(?:;|$)" ) {
>                set $backend 0;
>            }
>            if ($request_method = POST) {
>                set $backend 0;
>            }
>
>            if ($backend = 1) {
>
>                add_header Content-Type "text/html; charset=utf-8";
>                set $memcached_key "$request_uri";
>                memcached_pass 127.0.0.1:11211;
>                error_page 404 502 504 = @fallback;
>                break;
>            }
>
>            root   /var/www/tv.srv/www;
>            index  index.php index.html index.htm default.php;
>            break;
>        }
>
>        location @fallback {
>                root           /var/www/tv.srv/www;
>                fastcgi_pass   127.0.0.1:8888;
>                fastcgi_index  index.php;
>                fastcgi_param  SCRIPT_FILENAME  /var/www/tv.srv/www$fastcgi_script_name;
>                include        fastcgi_params;
>        }
>
> --
> С уважением,
>  Andrey                          mailto:andreyp.kt at gmail.com
>
>
>


More information about the nginx-ru mailing list