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

Как заставить Nginx выполнять повторную проверку кеша

У меня проблема, у меня есть сервер с видео-файлами и nginx в качестве прокси-кеш-сервера для офиса. Поскольку большинство видео не меняют, он работает нормально, но время от времени меняется несколько видео (я имею в виду, что они просто перезаписывают файлы на сервере после исправления некоторых ошибок или артефактов в видео), но nginx не может его увидеть и поддерживает старый кеш в соответствии с с участием

proxy_cache_valid 200 302 96h;

Есть ли способ сохранить действительное время кеша 96 часов, но заставить nginx время от времени повторно проверять кеш из восходящего потока?

Да, это возможно с proxy_cache_bypass директива. Вы можете определить строку запроса, файл cookie или заголовок HTTP-запроса, которые позволят вам получить желаемый ресурс непосредственно с внутреннего сервера (минуя кеш прокси-сервера Nginx) и сохранить тот же ответ в кеше прокси-сервера для обслуживания последующих запросов.

Вот несколько примеров:

location / {
  proxy_pass http://backend;
  proxy_cache_valid 168h;

  # Bypass cache with purgecache=true query string and save new response to proxy cache
  proxy_cache_bypass $arg_purgecache;

  # Bypass cache with "x-purge-cache: true" request header and save new response to proxy cache
  proxy_cache_bypass $http_x_purge_cache;

  # Bypass cache with "nocache=true" cookie and save new response to proxy cache
  proxy_cache_bypass $cookie_nocache;
}

proxy_cache_bypass будет работать до тех пор, пока cookie, строка запроса или заголовок запроса не имеют пустого значения или «0».

Например, чтобы очистить определенный видеофайл с помощью строки запроса, вы можете просто получить доступ https://example.com/some/video.mp4?purgecache=true