ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: location uri с аргументами включительно


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: location uri с аргументами включительно
  • From: Sergey Croitor <scroitor@xxxxxxxxx>
  • Date: Mon, 14 Jan 2013 17:05:48 +0200
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=Q6WoDPmMOwfELv6+JxiWbxMQsOhnRH/Bj2iGk3+LBIs=; b=YBnmtpWzBgqUr91cxRdTCSjNQxPouydhdMz6MH+SfLoJlW8GhzNfdOFiTxR+U8bHwd PiplGrWxIG17rQSuvNKYJ7ckk15PNLjZXi/M4lvliM/r+dEOPOxhA6Jq+27PmgOUP6eW 0O7P8dDMCUxm9Lf++ZqQHZpzijVpZrg21DSQlm8L4cHQaqCh4QBMfJoLlJLuQtzrtAOo M3hYc/gogJUwF6B/IwGrChvgxGBEJ8a6onlqnFzvpaD4QMHmwmxZ6ohnWnGEps5hq4Xf 3byb7xhwZ7IXJKj1Yj4eOK19o9PYH8aL0Yj4AI5T8BhXhBkn6pVRuubeEYtPu3xhIiEy 0h0g==
  • In-reply-to: <CAL-L5YCApVkfsA5i5=iPgHRS4taL-3_o-ohTQ-tWK4pHOPZ45g@mail.gmail.com>
  • References: <CADeiy2RgA56tf3Oirkw9WO9Cqwjf=XK40PNDXQ7c+eVbvbvTYA@mail.gmail.com> <1291628882.20130114113412@mtu-net.ru> <CADeiy2RHhyhNxo8jqXTyrgPNxbzTs5cMo9_YLs9qPAUadtAskQ@mail.gmail.com> <CAL-L5YCApVkfsA5i5=iPgHRS4taL-3_o-ohTQ-tWK4pHOPZ45g@mail.gmail.com>

Здравствуйте Вадим,

да, должен.
В основном все кэшируется, кроме исключений.
Вот урезанная location секция из текущего nginx конфига:

location / {
proxy_pass      http://backend;
proxy_cache cache;
proxy_cache_valid 200 302 304 180m;
proxy_cache_valid any 1s;
proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
add_header Cache-Control private;
expires 180m;
include         /etc/nginx/proxy.conf;
if ($request_uri = /index.php?main_page=accountbox) {
return 412;
}
# еще штук 20 подобных ($request_uri = /index.php?...) отсылок на на бэкенд 

if ($arg_main_page = nocachedajax) {
return 412;
}
# еще штук 10 подобных ($arg_xxx = /yyy) отсылок на на бэкенд 

if ($request_method = POST ) {
return 412;
}
error_page 412 = @fallback;
error_page 413 = @longcache;
}

location @fallback {
proxy_cache off;
proxy_pass      http://backend;
include         /etc/nginx/proxy.conf;
expires off;
}

то есть кэшируется все, за рядом исключений.
Строка для создания ключа включает в себя не нормализованный $request_uri
Еще раз повторю, что надо:
есть ряд запросов, которые НЕ надо кэшировать для обычных пользователей и наоборот надо для роботов.
Например: 
1) имя пользователя/статус shopping cart вверху страницы не надо кэшировать для пользователей и надо для роботов (пусть хоть пустой ответ им идет - им по барабану)
2) запрос "/index.php?main_page=nocachedajax&q=savelocation" пишет в сессию урл последней странички и отдает пустую строку.
для пользователя его НЕ надо кэшировать, а для роботов нужно(поскольку не нужно для них хранить последний урл в сессии).



2013/1/14 Вадим Лазовский <vadim.lazovskiy@xxxxxxxxx>
Здравствуйте.

Должен ли кэшироваться ответ от index.php c другими аргументами? Если да, то по какому ключу?


14 января 2013 г., 16:58 пользователь Sergey Croitor <scroitor@xxxxxxxxx> написал:
Прежде чем надеяться, я плотно мониторил логи в течение месяца где-то.
В данном конкретном случае роботы не балуют и используют именно этот паттерн ничего не переставляя.
То есть, буде такая возможность для location, то оно решило бы проблему.
И по моему опыту, роботы если и переставляют/добавляют к урлу параметры, то только от кривого кода в html или комбинируя всякие чекбоксы и селект боксы.
Ну а если какой лихой робот и переставил бы, то и фиг с ним(в моем случае). 
99% этих бесполезных запросов nginx бы отдал из кэша и одному из PHP и этим бы решил проблему.
Но видимо не судьба. 
Насколько я понял, это решаемо только путем предварительного вычисления условий с помощью perl_set внутри общего location.
Пока отщелкиваю подобные запросы от ботов на бэкенде, как это не прискорбно.

2013/1/14 Andrey Repin <hell-for-yahoo@xxxxxxxx>
SC> Пытаюсь организовать кэширование страниц с uri начинающегося со следующих
SC> символов:
SC> /index.php?main_page=nocachedajax&q=savelocation

Боюсь вас разочаровать, но для URL'ов в таком виде многие роботы частенько
переставляют параметры запроса, как им угодно, так что на выполнение условия
"начинается с" я бы на вашем месте надеяться не стал.

SC> Надо сделать это только для роботов

SC> Поначалу была мысль сделать так:

SC> location /index.php?main_page=nocachedajax&q=savelocation {



_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru



--
Best Regards,
Vadim Lazovskiy

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.