--- 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) ```