Пытаюсь организовать кэширование страниц с uri начинающегося со следующих символов:
location /index.php?main_page=nocachedajax&q=savelocation {
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 в этом случае?
Спасибо.