--- aliases: tags: - зрелость/🌱 date: - - 2024-04-07 zero-link: - "[[00 Nginx]]" parents: - "[[Кэширование]]" linked: - "[[Настройка клиентского кэширования в Nginx]]" link: https://struchkov.dev/blog/ru/nginx-optimization/#%D0%BA%D1%8D%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B5-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0 --- Если какие-то запросы не часто меняются, то можно закэшировать их на стороне сервера. Тогда Nginx один раз получит результат запроса от вашего приложения, а дальше будет отдавать их другим клиентам. Перед настройками, нам нужно создать директорию, в которой будут хранится данные кэша: ```shell sudo mkdir -p /var/nginx/cache ``` Чтобы включить кеширование, нужно прописать несколько директив в основной конфигурации `nginx.conf`. ```nginx 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](https://wiki.archlinux.org/index.php/Tmpfs), выделяя 256 мегабайт под кэш: ```shell sudo mount -t tmpfs -o size=256M tmpfs /var/nginx/cache ``` Если вам понадобиться отключить RAM-кеш, просто выполните команду: ```shell sudo umount /var/nginx/cache ``` Чтобы автоматически пересоздать каталог кеша в RAM после перезагрузки сервера, нам нужно обновить файл `/etc/fstab`. Добавьте в него следующую строку: ```txt tmpfs /var/nginx/cache tmpfs defaults,size=256M 0 0 ``` ## Дополнительные материалы - [Nginx cache: всё новое — хорошо забытое старое / Хабр](https://habr.com/ru/post/428127/)