Quantcast
Channel: Nginx Forum - Nginx Mailing List - Russian
Viewing all articles
Browse latest Browse all 3102

location uri с аргументами включительно (no replies)

$
0
0
Доброго времени суток всем!

Пытаюсь организовать кэширование страниц с 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 в этом случае?

Спасибо.
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Viewing all articles
Browse latest Browse all 3102

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>