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 файлы кэша. Их появление говорит о том что серверное кэширование работает.
Пример на скриншоте:
Если нужно очистить серверный кэш — достаточно удалить файлы из каталога /var/cache/nginx
Читайте также про браузерное кэширование. Оно проще настраивается и используется гораздо чаще.