digital-garden/dev/architecture/highload/Кэширование на стороне Nginx.md
Struchkov Mark d0de9bc884
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
Исправление форматирования
2024-09-17 21:10:50 +03:00

4.1 KiB
Raw Blame History

aliases tags date zero-link parents linked
maturity/🌱
2024-04-07
00 Nginx
../Кэширование
Кэширование статики в Nginx

Если какие-то запросы не часто меняются, то можно закэшировать их на стороне сервера. Тогда Nginx один раз получит результат запроса от вашего приложения, а дальше будет отдавать их другим клиентам.

Перед настройками, нам нужно создать директорию, в которой будут хранится данные кэша:

sudo mkdir -p /var/nginx/cache

Чтобы включить кэширование, нужно прописать несколько директив в основной конфигурации nginx.conf.

http {
    proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=nginxcash:60m max_size=256m inactive=24h;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_methods GET HEAD;
    proxy_cache_min_uses 2;
}

proxy_cache_path указывает путь в файловой системе.

Не кэшируйте HTTP-ответы при первом обращении. Используйте proxy_cache_min_uses 2, чтобы кэшировать только те элементы, к которым обращались более одного раза. Таким образом, вы уменьшите нагрузку прокси-кэша на запись и предотвратите заполнение кэша содержимым, к которому редко обращаются.

Ключ кэширования Nginx по умолчанию не очень хорошо работает с сайтами с несколькими поддоменами. Вы можете настроить ключ кэширования, задав proxy_cache_key. В своей конфигурации я использую вот такой ключ: proxy_cache_key $scheme$host$uri$is_args$args;

Переносим кэш Nginx в RAM

Можно значительно ускорить кэш, если смонтировать его не в файловую систему а в RAM.

Для этого также создаем папку для кэша, можно использовать ту же, но ее нужно очистить от папок. Далее монтируем созданный каталог в RAM с помощью команды tmpfs, выделяя 256 мегабайт под кэш:

sudo mount -t tmpfs -o size=256M tmpfs /var/nginx/cache

Если вам понадобиться отключить RAM-кэш, просто выполните команду:

sudo umount /var/nginx/cache

Чтобы автоматически пересоздать каталог к'ша в RAM после перезагрузки сервера, нам нужно обновить файл /etc/fstab. Добавьте в него следующую строку:

tmpfs /var/nginx/cache tmpfs defaults,size=256M 0 0

Мета информация

Область:: ../../../meta/zero/00 HighLoad Родитель:: ../Кэширование Источник:: Автор:: Создана:: 2024-04-07

Дополнительные материалы

Дочерние заметки