---
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]]
### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, this.file.link) or contains(parents, this.file.link) -->