cache-purge: Модуль очистки кэша NGINX
Установка
Вы можете установить этот модуль в любом дистрибутиве на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-cache-purge
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-cache-purge
Включите модуль, добавив следующее в начало файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_cache_purge_module.so;
Этот документ описывает nginx-module-cache-purge v2.5.8, выпущенный 29 января 2026 года.
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
Устанавливает тип ответа для результата очистки.
Частичные ключи
Иногда невозможно передать точный ключ кэша для очистки страницы. Например, когда содержимое cookie или параметры являются частью ключа. Вы можете указать частичный ключ, добавив звездочку в конце 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
- Faking Surrogate Cache-Keys for Nginx Plus (gist)
- Delete NGINX cached md5 items with a PURGE with wildcard support
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-cache-purge.