Назад | Перейти на главную страницу

Обойти кеш Nginx при получении определенного запроса

Я использую кеш 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;