<div dir="ltr">Доброго времени суток всем!<div><br></div><div style>Пытаюсь организовать кэширование страниц с uri начинающегося со следующих символов:</div><div style>/index.php?main_page=nocachedajax&q=savelocation<br>
</div><div style><br></div><div style>Надо сделать это только для роботов</div><div style><br></div><div style>Поначалу была мысль сделать так:</div><div style><br></div><div style><div>location /index.php?main_page=nocachedajax&q=savelocation {</div>
<div>                proxy_pass      <a href="http://backend">http://backend</a>;</div><div>                proxy_cache cache;</div><div>                proxy_cache_valid 200 302 304 1800m;</div><div>                proxy_cache_valid any 1s;</div>
<div>                proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|savelocation";</div><div>                proxy_hide_header "Set-Cookie";</div><div>                proxy_ignore_headers "Cache-Control" "Expires";</div>
<div>                add_header Cache-Control private;</div><div>                expires 1800m;</div><div>                include         /etc/nginx/proxy.conf;</div><div>                if ($http_user_agent !~* (spider|bot|crawler)) {</div>
<div>                    # для нероботов не кэшируем и шлем далее на бэкенд<br></div><div>                    # роботоопределение грубое, но для нашего случая достаточное<br></div><div>                    return 412;</div>
<div>                }</div><div>                error_page 412 = @fallback;<br></div><div>        }</div><div><br></div><div style>или как вариант задания location</div><div style>location ^~ /index.php?main_page=nocachedajax&q=savelocation {<br>
</div><div style>...</div><div style>}</div><div style><br></div><div style>Но в документации наткнулся на следующее:</div><div style>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<br></div><div style>То есть все, что после "?", будет проигнорировано и совпадения с указанной строкой не будет никогда.</div><div style><br></div><div style>Кто-то может поделиться идеей как обойти это ограничение и как правильно указать правило для location в этом случае?</div>
<div style><br></div><div style>Спасибо.</div><div style><br></div></div></div>