74 lines
4.1 KiB
Markdown
74 lines
4.1 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date:
|
|||
|
- - 2024-04-07
|
|||
|
zero-link:
|
|||
|
- "[[00 Nginx]]"
|
|||
|
parents:
|
|||
|
- "[[../Кэширование|Кэширование]]"
|
|||
|
linked:
|
|||
|
- "[[Кэширование статики в Nginx]]"
|
|||
|
---
|
|||
|
Если какие-то запросы не часто меняются, то можно закэшировать их на стороне сервера. Тогда 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
|
|||
|
```
|
|||
|
***
|
|||
|
## Мета информация
|
|||
|
**Область**:: [[../../../meta/zero/00 HighLoad|00 HighLoad]]
|
|||
|
**Родитель**:: [[../Кэширование|Кэширование]]
|
|||
|
**Источник**::
|
|||
|
**Автор**::
|
|||
|
**Создана**:: [[2024-04-07]]
|
|||
|
### Дополнительные материалы
|
|||
|
- [Оптимизация NGINX](https://struchkov.dev/blog/ru/nginx-optimization/)
|
|||
|
- [Nginx cache: всё новое — хорошо забытое старое / Хабр](https://habr.com/ru/post/428127/)
|
|||
|
- [[../../../../../_inbox/Кэширование статики в Nginx|Кэширование статики в Nginx]]
|
|||
|
### Дочерние заметки
|
|||
|
```dataview
|
|||
|
LIST
|
|||
|
FROM [[]]
|
|||
|
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
|||
|
```
|