У меня обычный
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=drupal:16m;
proxy_cache_key "$scheme$host$request_uri";
установить кеширование прокси. Как мне настроить nginx, чтобы разрешить удаление определенного элемента из кеша с помощью HTTP-запроса?
Если вы пытаетесь выполнить выборочную очистку страниц на Drupal то я бы порекомендовал вам прочитать эту статью, так как она немного длинная.
Подведем итог основным этапам:
Измените расположение сервера, который обрабатывает наши запросы Drupal, с помощью следующего кода:
location = /index.php {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/$host/drupal/index.php;
fastcgi_hide_header X-Drupal-Cache; #optional
fastcgi_hide_header Etag; #optional
fastcgi_pass php;
# Cache Settings
set $nocache "";
if ($http_cookie ~ SESS) { #logged in users should bypass the cache
set $nocache "Y";
}
if ($request_uri ~ \? ) { # Purge doesn't handle query strings yet
set $nocache "Y";
}
fastcgi_cache mycache;
fastcgi_cache_key $host$request_uri;
fastcgi_cache_valid 200 301 1d;
fastcgi_ignore_headers Cache-Control Expires;
fastcgi_cache_bypass $nocache;
fastcgi_no_cache $nocache;
add_header X-nginx-Cache $upstream_cache_status; #optional
expires epoch;
}
Создайте новый сервер, прослушивающий случайный порт на интерфейсе localhost.
"http://127.0.0.1:8888"
.и вы сделали !!
Источник статьи: кеширование nginx с выборочной очисткой страниц