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