Nginx Proxy Cache Forklaret

Når du udvikler applikationer, skal du blandt mange ting fokusere på fire vigtige ting: brugeroplevelse, sikkerhed, skalerbarhed og ydeevne. Og det sidste er ikke altid 100% klart, når du er en jr dev eller lige er begyndt i denne kodende verden. Mens du har god hardware og hurtig internet, kan uplinks hjælpe dig med at få store hastigheder. Sommetider er din app dårligt kodet og fungerer ikke som forventet, når du flytter fra udviklingsfase til produktionsservere.

En af de bedste måder at få en god app ydeevne på er at tilføje caching lag til dit indhold og funktioner. Du kan tilføje cache til statiske filer (billeder, javascript, css, osv.) Til databaseoperationer og også til dynamisk indhold leveret af PHP, Python og mange andre programmeringssprog.

Nginx Proxy Cache

Nginx er en webserver, men også en proxyserver, og en af ​​de mest anvendte funktioner i Nginx er dens proxy-teknologi. Når du installerer Nginx som omvendt proxy eller load balancer, kan du aktivere kraftige cache-funktioner, og det er hvad dette indlæg handler om. På dette emne vil vi forsøge at forklare, hvad der er Nginx Proxy Cache og hvordan du aktiverer den til at fremskynde dine webapplikationer.

Hvad er Proxy Cache?

Proxy cache er stort set data gemt på en mellemliggende server mellem klienten og den endelige server. I vores tilfælde er Nginx proxyserveren, der gemmer en kopi af det oprindelige indhold på proxy cachen, og når klientens browser har anmodet om den oprindelige fil, leverer proxy cachen kopien, hvilket giver hurtigere hastigheder og reducerer systemressourceforbruget ( CPU, RAM og I / O) på destinationsserveren.

Hvordan kan jeg aktivere Nginx Proxy Cache?

For at aktivere proxy cache skal du redigere nginx.conf fil og indstille to vigtige variabler:

  • proxy_cache_path: Stien, hvor du gemmer dine cache-data, aldo det sted, hvor du vil konfigurere dine cache-indstillinger.
  • proxy_cache: direktivet bruges til at aktivere proxy cachen.

Eksempel på en fuldt fungerende proxy-cache-konfiguration:

proxy_cache_path / var / nginx / cache niveauer = 1: 2 keys_zone = app_cache: 10m max_size = 5g inaktiv = 45m use_temp_path = off;

server {... ... placering / produkter {proxy_cache app_cache; proxy_pass http: // app_upstream; } ... ...}

Lad os forklare hver mulighed vi brugte:

proxy_cache_path / var / nginx / cache niveauer = 1: 2 keys_zone = app_cache: 10m max_size = 5g inaktiv = 45m use_temp_path = off;

/ Var / nginx / cache / er den valgte mappe til at gemme cacherdataene, du kan indstille en hvilken som helst mappe som du vil.

niveauer = 1: 2 angiver et hierarki med to niveauer under / var / nginx / cache. Dette er nyttigt, når du har et meget stort antal cachelagrede filer for at undgå langsomme hastigheder under filadgang.

keys_zone = app_cache: 10m definerer en 10M delt hukommelseszone, der gemmer cache nøgler og metadata oplysninger. Dette hjælper med at fremskynde proxy cache checks.

MAX_SIZE er maksimumsgrænsen for cachestørrelsen, i dette tilfælde sætter vi det til 5G. Det anbefales altid at aktivere grænsen for maksimal størrelse for at forhindre diskpladsproblemer, som om du forlader det uden nogen grænse, vil Nginx fortsætte med at skrive cacherdataene, indtil alt ledigt diskplads er brugt.

inaktiv = 45m er cache livsgrænsen for inaktivt indhold, det angiver, hvor længe en cachelagret vare kan forblive på cachen uden at blive adgang til. Hvis der ikke er adgang til en fil inden for de sidste 45 minutter, fjernes den fra cachen.

use_temp_path = off indstiller den midlertidige mappe, hvilket betyder, at Nginx vil skrive de midlertidige filer, der bruges til cache, i samme mappe som tidligere defineret ved proxy_cache_path-variablen (/ var / nginx / cache i dette tilfælde). For at undgå unødvendige I / O-operationer sætter vi det på.

proxy_cache muliggør cachelagring af alt indhold, der er placeret under placeringsblokken, i dette tilfælde blev angivet som "placering / produkter", men du kan placere det til at cache alt dit websiteindhold, for eksempel:

Beliggenhed /  {

proxy_cache app_cache;
proxy_pass http: // app_upstream; }

Jeg vil ikke cache nogle objekter, hvad kan jeg gøre?

Hvis din proxy_cache er angivet under en positionsblok, der indeholder alt indhold (placering /), kan du undgå at cache alle filer, der indeholder Cache-Control-sæt til Private, No-Cache og No-Store, også overskrifter, der indeholder Set-Cookie vil ikke blive cachelagret, dette er angivet på oprindelsesserveren, og Nginx respekterer disse indstillinger for at undgå at cache unødvendige filer. Hvis du har brug for flere oplysninger, skal du læse dette interessante Google-dokument om Cache-kontrol og hvad er de tilgængelige muligheder.

Hvordan kan jeg rydde proxy cachen?

Der er vanskelige måder at slette indholdet af din cache, og der er hurtige måder. Den vanskelige måde bruger proxy_cache_purge Direktivet kan dette direktiv konfigureres til at indstille nogle betingelser, hvor Nginx kan opdage, om anmodningen er en udrensningsanmodning eller en adgangsforespørgsel, og handle om at fjerne cachenøglen fra den gemte cache. Dette er nyttigt, når du skal slette nogle cache-filer, og ikke alle dem.

Og den hurtige måde at slette al cachen på er bare ved at slette cache-filerne:

find / var / nginx / cache -type f -delete service nginx genstart

Hvordan kan jeg kontrollere, at Nginx proxy cache virker?

Enkelt: kig på / var / nginx / cache-biblioteket, hvis proxy-cachen fungerer, skal du se mange filer, der er oprettet i den pågældende mappe. Du kan gøre det ved at køre:

ls -alh / var / nginx / cache

Konklusion

Nginx er en kraftfuld og robust webserver, der indeholder mange cache-muligheder. Som vi har set på dette indlæg ved hjælp af funktionen Proxy Cache kan du cache kritisk indhold på din webserver og fremskynde dine applikationer. Husk, at ydeevne ikke kun er vigtigt for at undgå overbelastning af servere og lave hastigheder, men også for at holde en stor brugeroplevelse.

Hvad har din erfaring med Nginx Proxy Cache-funktionen? Venligst send dine kommentarer nedenfor.

Læs mere om Nginx Proxy Cache fra Nginx officielle dokumenter

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.