digital-garden/dev/devops/nginx/Кэширование на стороне Nginx.md
2024-10-25 20:04:39 +03:00

4.8 KiB
Raw Permalink Blame History

aliases tags date
maturity/🌱
2024-04-07

Для повышения производительности можно кэшировать ответы на запросы на стороне 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 — указывает путь к директории, где будут храниться кэшированные данные.

  • Параметр levels задает структуру папок для хранения кэша, keys_zone определяет размер зоны для хранения метаданных (в данном случае 60 мегабайт).
  • max_size=256m задает максимальный размер кэша.
  • inactive=24h указывает, что кэшированные данные, к которым не было обращений в течение 24 часов, будут автоматически удалены.

proxy_cache_key — определяет ключ кэширования. В данном случае используется комбинация схемы запроса, метода, хоста и URI. Этот ключ позволяет разделить кэш для разных поддоменов и запросов.

proxy_cache_methods — указывает, какие HTTP-методы будут кэшироваться (в данном примере — только методы GET и HEAD).

proxy_cache_min_uses — задает минимальное количество обращений к ресурсу перед его кэшированием. Установка значения 2 означает, что кэширование начнется только после второго обращения, что предотвращает кэширование редко используемых данных и снижает нагрузку на запись.

Переносим кэш 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 Nginx Родитель:: ../../architecture/Кэширование Источник:: Автор:: Создана:: 2024-04-07

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

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