location uri с аргументами включительно
Sergey Croitor
scroitor at gmail.com
Sat Jan 12 19:10:00 UTC 2013
Доброго времени суток всем!
Пытаюсь организовать кэширование страниц с uri начинающегося со следующих
символов:
/index.php?main_page=nocachedajax&q=savelocation
Надо сделать это только для роботов
Поначалу была мысль сделать так:
location /index.php?main_page=nocachedajax&q=savelocation {
proxy_pass http://backend;
proxy_cache cache;
proxy_cache_valid 200 302 304 1800m;
proxy_cache_valid any 1s;
proxy_cache_key
"$request_method|$http_if_modified_since|$http_if_none_match|$host|savelocation";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
add_header Cache-Control private;
expires 1800m;
include /etc/nginx/proxy.conf;
if ($http_user_agent !~* (spider|bot|crawler)) {
# для нероботов не кэшируем и шлем далее на бэкенд
# роботоопределение грубое, но для нашего случая
достаточное
return 412;
}
error_page 412 = @fallback;
}
или как вариант задания location
location ^~ /index.php?main_page=nocachedajax&q=savelocation {
...
}
Но в документации наткнулся на следующее:
Note that locations of all types test only a URI part of request line
without arguments. This is done because arguments in the query string may
be given in several ways
То есть все, что после "?", будет проигнорировано и совпадения с указанной
строкой не будет никогда.
Кто-то может поделиться идеей как обойти это ограничение и как правильно
указать правило для location в этом случае?
Спасибо.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130112/8bbbb948/attachment.html>
Подробная информация о списке рассылки nginx-ru