Kontakta oss

info@serverion.com

NGINX Config Rewind: Serverion återupplivar den förlorade konsten med proxycachejustering

NGINX Config Rewind: Serverion återupplivar den förlorade konsten med proxycachejustering

Vill du ha snabbare webbplatser och lägre serverbelastningar? NGINX proxy caching är din lösning. Genom att lagra ofta efterfrågat innehåll snabbar det upp leveransen och minskar belastningen på dina ursprungsservrar. Serverion delar med sig av praktiska tips för att optimera din cache-inställning för bättre prestanda och tillförlitlighet.

Viktiga takeaways:

  • Servera inaktuellt innehåll: Använd cachade svar under serveravbrott med proxy_cache_use_stale.
  • Bakgrundsuppdateringar: Uppdatera cacheposter utan att störa användare som använder proxy_cache_background_update.
  • Förhindra överbelastning: Undvik att överväldiga din ursprungsserver med proxy_cache_lock.

Exempelinställning:

proxy_cache_path /var/cache/nginx nivåer=1:2 keys_zone=my_cache:10m max_size=10g inaktiv=60m use_temp_path=av; proxy_cache my_cache; proxy_cache_use_stale uppdaterar; proxy_cache_background_update på; proxy_cache_lock på; 

Dessa inställningar säkerställer snabba svar, effektiv resursanvändning och tillförlitlig innehållsleverans. Oavsett om du kör en liten VPS eller en server med hög trafik, kan dessa tekniker hjälpa dig att få ut det mesta av NGINX proxy-cachelagring.

NGINX: Cachning av innehåll med omvänd proxy (supersnabb …

Nginx

NGINX Proxy Caching Grunderna

Serverions cache-justeringstekniker bygger på kärnprinciperna för NGINX proxy-cache, vilket innebär att lagra och servera kopior av ursprungsinnehåll. Systemet använder tre huvudkomponenter: cachesökvägen, en delad minneszon och en cachehanterare som tar bort utgångna eller minst nyligen använda (LRU) filer när cachen når sin gräns.

NGINX Proxy Cache Operation

När NGINX bearbetar en begäran kontrollerar den först dess delade minneszon för att se om det begärda innehållet redan är cachat. Denna sökning i minnet möjliggör snabb bestämning av cacheträffar eller missar. Som referens kan en 1 MB-nycklarzon lagra cirka 8 000 cache-nycklar[1].

Så här fungerar cachningsprocessen:

  • NGINX hashar begäran om att skapa en unik cache-nyckel.
  • Den kontrollerar den delade minneszonen för den nyckeln.
  • Om nyckeln hittas (cacheträff) serveras innehållet direkt från cachen.
  • Om nyckeln inte hittas (cache miss) hämtas innehållet från ursprungsservern och lagras i cachen för framtida användning.

Serverion optimerar prestanda genom att säkerställa effektiva nyckeluppslagningar och organisera cachelagringen med hjälp av kataloghierarkier.

Core Cache Elements

Direktiv Syfte Inverkan
proxy_cache_path Anger cachelagringsplatsen Bestämmer var och hur innehåll cachelagras
proxy_cache Aktiverar cachning för specifika förfrågningar Aktiverar cachelagring inom ett platsblock
keys_zone Tilldelar delat minne för cache-nycklar Tillåter snabba sökningar i minnet
inaktiv Definierar hur länge oanvända objekt stannar i cachen Kontrollerar cachens färskhet och tidpunkt för vräkning

För att maximera prestanda, använd en två-nivå nivåer hierarki för att förhindra nedgångar i filsystemet. Dessutom ställ in use_temp_path=av att skriva cachade filer direkt till deras slutliga plats, vilket minskar I/O-overhead.

NGINX respekterar cachedirektiv från ursprungsservern. Den lagrar bara svar som innehåller en Utgår rubrik med ett framtida datum eller ett Cache-Control header med en max-ålder värde större än noll.

Du kan nu tillämpa dessa principer i din NGINX proxycache-konfiguration.

[1] NGINX-dokumentation: En 1 MB nycklarzon lagrar data för cirka 8 000 nycklar.

Installationsguide för NGINX Proxy Cache

Lär dig hur du konfigurerar och optimerar NGINX proxy-cache steg för steg.

Cacheparameterinställningar

Grunden för installationen av NGINX proxy-cache är proxy_cache_path direktiv. Här är ett exempel på en konfiguration:

proxy_cache_path /var/cache/nginx nivåer=1:2 keys_zone=my_cache:10m max_size=10g inaktiv=60m use_temp_path=av; 

Denna konfiguration skapar en katalogstruktur på två nivåer, allokerar 10 MB för keys_zone (tillräckligt för cirka 80 000 nycklar), anger en maximal cachestorlek på 10 GB och definierar en inaktiv timeout på 60 minuter.

Du kan också inkludera dessa valfria direktiv för bättre kontroll:

Direktiv Syfte
proxy_cache_use_stale Serverar inaktuellt innehåll om ursprungsservrar inte är tillgängliga
proxy_cache_revalidate Använder villkorade GET-förfrågningar för att kontrollera om innehållet fortfarande är giltigt
proxy_cache_background_update Uppdaterar gammalt innehåll i bakgrunden
proxy_cache_lock Förhindrar att flera förfrågningar överväldigar ursprungsservern

Efter att ha definierat dessa parametrar, allokera minne och diskutrymme baserat på din förväntade trafik.

Hantering av cachestorlek

För att effektivt anpassa din cache, överväg både minnes- och diskanvändning. Så här gör du:

  • Minneszonstorlek Tilldela minne för keys_zone för att matcha dina cachningsbehov:
    keys_zone=enterprise_cache:100m; # Stöder cirka 800 000 cache-nycklar 
  • Diskutrymmesallokering Justera proxy_cache_path för att ange maximalt diskutrymme:
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=enterprise_cache:100m max_size=10g inactive=24h use_temp_path=off; 

När dessa parametrar är inställda är du redo att initiera och aktivera din cache.

Cache-initiering

Efter att ha finjusterat dina parametrar och storlek, följ dessa steg för att aktivera caching:

  1. Använd proxy_cache_path direktiv från exemplet ovan och lägg till proxy_cache min_cache till din konfiguration.
  2. Aktivera cachning inom relevant server eller plats blockera:
    proxy_cache min_cache; 
  3. Inkludera eventuellt något av de finjusteringsdirektiv som nämnts tidigare för att förbättra prestandan.
  4. Övervaka cachestatusen genom att lägga till en anpassad rubrik:
    add_header X-Cache-Status $upstream_cache_status; 

Notera: Enligt NGINX dokumentation, en 1 MB keys_zone kan lagra cirka 8 000 nycklar.

Denna inställning säkerställer att din cache är redo att hantera trafik effektivt samtidigt som flexibiliteten för justeringar bibehålls.

Enterprise NGINX Cache Management

När din cache-sökväg och parametrar är inställda är det dags att skala din installation för att hantera trafik på företagsnivå effektivt.

Cache träfffrekvensoptimering

För att förbättra cacheeffektiviteten, aktivera funktioner som villkorliga förfrågningar och bakgrundsuppdateringar:

proxy_cache_revalidate på; proxy_cache_background_update på; proxy_cache_use_stale uppdaterar; 

Förhindra att din ursprungsserver överbelastas genom att konfigurera dessa inställningar:

proxy_cache_lock på; proxy_cache_lock_timeout 5s; proxy_cache_min_uses 2; 

För miljöer med hög trafik, fördela cachebelastningen över flera lagringsenheter för att förbättra prestandan:

split_clients "${request_uri}" $disk { 20% "/data/cache1"; 20% "/data/cache2"; 20% "/data/cache3"; 20% "/data/cache4"; * "/data/cache5"; } 

När din cache är optimerad för prestanda, fokusera på att säkra den för att hantera känsligt innehåll.

Cachesäkerhetskontroller

För att skydda känsliga förfrågningar, kringgå cachelagring och anpassa cache-nycklar efter behov:

proxy_cache_bypass $http_pragma; proxy_cache_bypass $cookie_nocache; proxy_ignore_headers Cache-kontroll; 

För personligt innehåll eller cookie-baserade förfrågningar, justera cache-nyckeln och de metoder som stöds:

proxy_cache_key "$host$request_uri$cookie_user"; proxy_cache_methods HÄMTA HUVUDINLÄGG; 

När du har säkrat din cache, se till att du kontinuerligt övervakar dess prestanda.

Cacheprestandaspårning

Övervaka cachebeteende med hjälp av statusdefinitioner för att finjustera din konfiguration:

Status Definition
UPPDATERING Inaktuellt innehåll visas medan en uppdatering pågår
ÅTERVALIDERAD Cachat innehåll validerades om med ursprungsservern

Analysera X-Cache-status mätvärden regelbundet och anpassa direktiven för att passa trafikmönster för optimala resultat.

ServerionNGINX Cache-konfiguration

Serverion

Serverion anpassar NGINX cache-inställningar baserat på de specifika behoven för varje arbetsbelastning. Genom att använda kärndirektiv optimerar de cache-konfigurationer på olika sätt för VPS och dedikerade servrar.

Cachesökvägar efter arbetsbelastning

VPS arbetsbelastningar

För VPS-inställningar ger denna konfiguration en balans mellan minneseffektivitet och snabba svarstider:

proxy_cache_path /data/nginx/cache nivåer=1:2 keys_zone=SERVERCACHE:10m max_size=10g inaktiv=60m use_temp_path=av; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 302 60m; proxy_cache_valid 404 1m; 

De keys_zone storleken är inställd för att rymma cirka 80 000 nycklar.

Dedikerade servrar

För högtrafikerade applikationer på dedikerade servrar använder Serverion ett distribuerat cachesystem över flera SSD:er:

proxy_cache_path /cache1 nivåer=1:2 keys_zone=cache1:10m; proxy_cache_path /cache2 nivåer=1:2 keys_zone=cache2:10m; proxy_cache_path /cache3 nivåer=1:2 keys_zone=cache3:10m; split_clients "${request_uri}" $cachezone { 33% "cache1"; 33% "cache2"; * "cache3"; }  Begränsa inställningarna för att dela klienter som är kopplade till en specifik klient. 

Denna inställning fördelar cache-skrivningar jämnt över tre SSD:er med hjälp av split_clients direktiv.

Specifika värden för dessa konfigurationer härleds från Serverions referenstabell för cacheparameter.

Infrastrukturinställningar

För att ytterligare förbättra prestandan justeras NGINX-arbetarinställningarna för att effektivt hantera cache-inmatning och -utdata:

worker_processes auto; worker_connections 1024; worker_cpu_affinity 0-3; # justerar arbetare med CPU-kärnor 

Dessa justeringar säkerställer att cachade svar levereras med maximal effektivitet.

Sammanfattning: NGINX Cache Tuning Resultat

Serverion förbättrade prestanda och tillförlitlighet över sina värdsystem genom detaljerade proxycachejusteringar. Genom att förfina cachehierarkin, hantera färskhetsinställningar och optimera header-bearbetning bibehöll de sömlös innehållsleverans. Realtid X-Proxy-Cache mätvärden gjorde det möjligt för IT-team att justera cacheinställningar effektivt, vilket ledde till snabbare svarstider, mindre påfrestning på ursprungsservrar och bättre tillgänglighet för företagsverksamhet.

Relaterade blogginlägg

sv_SE