Nginx proxy cache


Nginx proxy cache или серверное кэширование Nginx — позволяет сохранять на сервере результаты выполнения запросов и отдавать их повторно другим пользователям.



Nginx proxy cache, серверное кэширование


В nginx.conf в основном блоке http задается директива, которая определяет путь для сохранения файлов, keys_zone для кэша (отвечает за уникальность, устанавливается обычно отдельная зона для каждого сайта). Указываются время кэширования и максимальный размер.

mcedit /etc/nginx/nginx.conf

proxy_cache_path /var/cache/nginx levels=2 keys_zone=one:50m max_size=150m;



Каталог нужно создать и сделать владельцем пользователя, из под которого работает веб-сервер

mkdir /var/cache/nginx

chown www-data: /var/cache/nginx



В случае если процессы nginx на сервере выполняются с правами другого пользователя, не www-data — с помощью chown нужно выставить владельцем каталога его.


Могут задаваться и другие опции, приведены те, что используются чаще всего.



Остальные директивы добавляются обычно в блок server в виртуальном хосте или в один из блоков location.

proxy_cache one;
proxy_cache_valid 200 301 302 304 15m;
proxy_cache_lock on;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_ignore_headers 'Cache-Control' 'Expires';
proxy_cache_key '$scheme$host$request_uri';



Применение настроек к большому количеству сайтов


Если сайтов много большинство директив можно вынести в отдельный конфигурационный файл, который просто подключить через include. Это позволит быстро вносить изменения, которые затронут все сайты и сделать конфигурацию более читаемой. Иначе править директивы придется для каждого.


Индивидуально должно быть значение proxy_cache. Это идентификатор, по которому кэширующий сервер различает сайт.

Если один идентификатор использовать для разных сайтов кэш начнет путаться. Часто это проявляется как разный контент отдаваемый при запросе к домену при одинаковых последовательных запросах.

Подробнее в документации nginx.



После добавления директив нужно перезапустить веб-сервер

nginx -s reload



Проверка работы и очистка кэша Nginx


Когда настройки начнут использоваться сервер будет сохранять в каталог /var/cache/nginx файлы кэша. Их появление говорит о том что серверное кэширование работает.



Пример на скриншоте:

Nginx proxy cache


Если нужно очистить серверный кэш — достаточно удалить файлы из каталога /var/cache/nginx



Читайте также про браузерное кэширование. Оно проще настраивается и используется гораздо чаще.

Сказать спасибо