Я использую кеш Nginx для своего приложения. Я хотел бы обойти кеш для одной очень конкретной строки запроса. Я думал, что смогу добиться этого, используя что-то вроде следующего:
location / {
if($uri ~ .*(ServerCheck).*) {set $nocache 1; }
proxy_pass http://127.0.0.1:9001/;
proxy_no_cache $nocache;
proxy_cache_bypass $nocache;
proxy_cache crownstudent;
proxy_cache_valid 200 1y;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
}
Однако, похоже, это не работает. Есть ли способ сделать это? Документация Nginx очень непонятна и не содержит примеров.
Спасибо!
$ uri держит нормализованный url, он может быть изменен любой другой директивой или перенаправлением. Все может быть сложнее, если ваша конфигурация nginx становится все длиннее и длиннее. я предпочитаю $ request_uri (Согласно документации nginx: полный исходный URI запроса с аргументами).
Попробуйте заменить свое состояние на это:
if($request_uri ~ ServerCheck) {set $nocache 1; }
Кстати, вам не нужно захватывать целевую строку ServerCheck, поскольку nginx просто тесты регулярное выражение.
Также вы можете быть уверены, что на запрос был получен ответ от прокси. Для этой работы я использую директиву add_header. Такие как:
add_header X-Proxy-Cache $upstream_cache_status;