Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GET запросы в memcache
- To: nginx-ru@xxxxxxxxx
- Subject: Re: GET запросы в memcache
- From: "Sergey Shepelev" <temotor@xxxxxxxxx>
- Date: Fri, 19 Dec 2008 21:24:08 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=eBZ6fdEx2jIUyBksw/iFVkWgaR4aInWR47sAJqHks+I=; b=rgMnMI/Yj0otNf/6HueUSIuauabdiO8yK+hvmNTuajhtauqg38aim85bDZb4qXBI+C 61CeLCzgiGs/Yna8EhzygFn5kLjrgcnqX0s6LkNnJWQ2CPS4DfLvTSAs8wWT02qdfIeg VozMUDU3RvsefjV74M0Y4lSvm4pcZs65MrfqE=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=iSwOphdvZDL7dxPVwGNqfr2Sdv5RKRmnB0Uwpxy6INtRAeKd9JHKky7Phy1oxpjYy8 zl9bZjiCI/jUxiMzGsYfql1yqFFGmq2cbH5w3IcdQnOiH9TLMxE3aS4JvC2KCIXhP7rI Q/ekGztHQLvH9/1r1pRZzKcBzap/8Qc3VfopY=
- In-reply-to: <1451154051.20081218194309@xxxxxxxxx>
- References: <1451154051.20081218194309@xxxxxxxxx>
2008/12/18 Andrey P <andreyp.kt@xxxxxxxxx>:
> Приветствую!
>
> При обращении к 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@xxxxxxxxx
>
>
>
|