cache-purge: Модуль очистки кэша NGINX
Установка на Debian/Ubuntu
Эти документы применяются к APT пакету nginx-module-cache-purge, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-cache-purge
Показать наборы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|--------------------|-------------|----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
ngx_cache_purge — это модуль nginx, который добавляет возможность очищать контент из кэшей FastCGI, proxy, SCGI и uWSGI. Операция очистки удаляет контент с тем же ключом кэша, что и у запроса на очистку.
Спонсоры
Работа над оригинальным патчем была полностью профинансирована компанией yo.se.
Статус
Этот модуль готов к производственному использованию.
Директивы конфигурации (синтаксис того же местоположения)
fastcgi_cache_purge
- синтаксис:
fastcgi_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - по умолчанию:
none - контекст:
http,server,location
Позволяет очищать выбранные страницы из кэша FastCGI.
proxy_cache_purge
- синтаксис:
proxy_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - по умолчанию:
none - контекст:
http,server,location
Позволяет очищать выбранные страницы из кэша proxy.
scgi_cache_purge
- синтаксис:
scgi_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - по умолчанию:
none - контекст:
http,server,location
Позволяет очищать выбранные страницы из кэша SCGI.
uwsgi_cache_purge
- синтаксис:
uwsgi_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - по умолчанию:
none - контекст:
http,server,location
Позволяет очищать выбранные страницы из кэша uWSGI.
Директивы конфигурации (синтаксис отдельного местоположения)
fastcgi_cache_purge
- синтаксис:
fastcgi_cache_purge zone_name key - по умолчанию:
none - контекст:
location
Устанавливает область и ключ, используемые для очистки выбранных страниц из кэша FastCGI.
proxy_cache_purge
- синтаксис:
proxy_cache_purge zone_name key - по умолчанию:
none - контекст:
location
Устанавливает область и ключ, используемые для очистки выбранных страниц из кэша proxy.
scgi_cache_purge
- синтаксис:
scgi_cache_purge zone_name key - по умолчанию:
none - контекст:
location
Устанавливает область и ключ, используемые для очистки выбранных страниц из кэша SCGI.
uwsgi_cache_purge
- синтаксис:
uwsgi_cache_purge zone_name key - по умолчанию:
none - контекст:
location
Устанавливает область и ключ, используемые для очистки выбранных страниц из кэша uWSGI.
Директивы конфигурации (опционально)
cache_purge_response_type
- синтаксис:
cache_purge_response_type html|json|xml|text - по умолчанию:
html - контекст:
http,server,location
Устанавливает тип ответа для результата очистки.
Частичные ключи
Иногда невозможно передать точный ключ кэша для очистки страницы. Например, когда содержимое куки или параметры являются частью ключа. Вы можете указать частичный ключ, добавив звездочку в конце URL.
curl -X PURGE /page*
Звездочка должна быть последним символом ключа, поэтому вы должны поставить переменную $uri в конце.
Пример конфигурации (синтаксис того же местоположения)
http {
proxy_cache_path /tmp/cache keys_zone=tmpcache:10m;
server {
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache tmpcache;
proxy_cache_key "$uri$is_args$args";
proxy_cache_purge PURGE from 127.0.0.1;
}
}
}
Пример конфигурации (синтаксис того же местоположения - очистка всех кэшированных файлов)
http {
proxy_cache_path /tmp/cache keys_zone=tmpcache:10m;
server {
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache tmpcache;
proxy_cache_key "$uri$is_args$args";
proxy_cache_purge PURGE purge_all from 127.0.0.1 192.168.0.0/8;
}
}
}
Пример конфигурации (синтаксис отдельного местоположения)
http {
proxy_cache_path /tmp/cache keys_zone=tmpcache:10m;
server {
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache tmpcache;
proxy_cache_key "$uri$is_args$args";
}
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache tmpcache;
proxy_cache_key "$1$is_args$args";
}
}
}
Пример конфигурации (опционально)
http {
proxy_cache_path /tmp/cache keys_zone=tmpcache:10m;
cache_purge_response_type text;
server {
cache_purge_response_type json;
location / { #json
proxy_pass http://127.0.0.1:8000;
proxy_cache tmpcache;
proxy_cache_key "$uri$is_args$args";
}
location ~ /purge(/.*) { #xml
allow 127.0.0.1;
deny all;
proxy_cache tmpcache;
proxy_cache_key "$1$is_args$args";
cache_purge_response_type xml;
}
location ~ /purge2(/.*) { # json
allow 127.0.0.1;
deny all;
proxy_cache tmpcache;
proxy_cache_key "$1$is_args$args";
}
}
server {
location / { #text
proxy_pass http://127.0.0.1:8000;
proxy_cache tmpcache;
proxy_cache_key "$uri$is_args$args";
}
location ~ /purge(/.*) { #text
allow 127.0.0.1;
deny all;
proxy_cache tmpcache;
proxy_cache_key "$1$is_args$args";
}
location ~ /purge2(/.*) { #html
allow 127.0.0.1;
deny all;
proxy_cache tmpcache;
proxy_cache_key "$1$is_args$args";
cache_purge_response_type html;
}
}
}
Решение проблем
- Включение
gzip_varyможет привести к различным результатам при очистке, при его включении вы можете столкнуться с проблемами очистки кэша. Для надежной работы вы можете отключитьgzip_varyвнутри местоположения #20.
Тестирование
ngx_cache_purge поставляется с полноценным набором тестов на основе Test::Nginx.
Вы можете протестировать это, запустив:
$ prove
См. также
- ngx_slowfs_cache.
- http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#purger
- http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_purge
- https://github.com/wandenberg/nginx-selective-cache-purge-module
- https://github.com/wandenberg/nginx-sorted-querystring-module
- https://github.com/ledgetech/ledge
- Симуляция Surrogate Cache-Keys для Nginx Plus (gist)
- Удаление кэшированных md5 элементов NGINX с помощью PURGE с поддержкой подстановочных знаков