Я «спрятал» медленный REST API за nginx. Возникли известные трудности — как обеспечить согласованность кэша? Если для пары урлов это еще можно было сделать чисто через конфигурацию, то с десятью и более это уже выходило за рамки здравого смысла.
Все, что я видел в Google, было немного чудовищным.
Мне очень нужна была такая (или подобная) конфигурация:
В результате родился велосипед – github.com/egorse/ngx-proxy-cache-invalidate .location ~ ^/zone_two/(.
*)$ { proxy_cache zone_two; proxy_cache_key $document_uri; proxy_cache_valid 60m; set $do_invalidate 0; if ($request_method = PUT) { set $do_invalidate 1; } proxy_cache_invalidate $do_invalidate; # Tadaaa!!! proxy_pass http://127.0.0.1:9102/$1 ; }
Работает с 1.8.0, 1.8.1. Другие версии nginx я не тестировал.
Критика всеми возможными способами добро пожаловать.
Особенно если nginx — это потроха.
Обновление 1: не только один элемент в зоне кэша становится недействительным, но и _все_ элементы из зоны кэша, определенной proxy_cache. Теги: #Nginx #модуль nginx
-
Бюлер, Карл
19 Oct, 24 -
Dynamicobject, Json И Ближайшее Будущее
19 Oct, 24 -
Ebay Скомпрометирован
19 Oct, 24 -
Конфликт С Вебмани.
19 Oct, 24