@AKLZephyr

Как сбросить кеш на всех серверах?

Есть nginx как прокси на 2 бекенда. У каждого бекенда свой файловый кеш. При добавлении новости на сайт нужно сбрасывать кеш на всех серверах. Бекенды между собой не общаются, но в целом можно сделать.
Вот схема: тут

Какие есть стратегии для сброса кеша?
Пока придумал такой вариант: добавить метод в апи /api/cache/clear, на nginx написать код чтобы get запрос отправить и на все сервера сделался запрос. И когда новость добавляется вызывать этот метод. Как написать такой код для nginx или другое решение?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
Zraza
@Zraza
Помог ответ? Отметь решением!
Да, можно отправлять запросом, но:
1) Есть функционал очистки кэша по определённым критериям, доступен он только в коммерческой версии nignx
https://nginx.org/ru/docs/http/ngx_http_proxy_modu...
2) Конечно, можно накостылить, чтобы по определённому запросу удалялись файлы. Но лучше это как-то защитить (хоть basic auth). И, кажется, это потребует перезапуска nginx (может и reload хватит).
3) Ещё есть модуль https://github.com/FRiCKLE/ngx_cache_purge - но я не знаю, насколько он сейчас работоспособен

Как вариант - перенести кэш из nginx в другое более управляемое хранилище (например редис) и очищать его при правках.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы