Nginx fínstillingarstilling með skyndiminni

Nginx er öflugur vefforritshugbúnaður til að hýsa vefsíður með. Með tímanum hefur Nginx loksins farið fram úr Apache í mest notaða vefþjónahugbúnaðinum eftir að hann kom á markað snemma á 2000. Eitt af mörgum hlutum sem Nginx er notað fyrir er að vera notað sem öfugt umboð eða álagsjafnvægi.

Hins vegar missir maður helst af lykileiginleika þegar hann er notaður sem framhlið fyrir bakþjóna. Það er hæfileikinn sem Nginx hefur umfram HAProxy við að ná kyrrstæðum auðlindum tiltölulega auðvelt með því að skrifa á diskinn eða ef þú ert með feitan netþjón með töluvert af vinnsluminni og bætir skyndiminni við minni fyrir fullkominn árangur.

Í eftirfarandi kennslu muntu sjá nokkur dæmi um hvernig á að gera þetta, sem gefur Nginx netþjóninum þínum samstundis uppörvun ef þú notar Nginx í öfugri umboðsaðstæðum.

Forsendur

  • Mælt með stýrikerfi: Hvaða Linux stýrikerfi sem er með Nginx uppsett.
  • Notendareikningur: Notendareikningur með sudo eða rót aðgang.

Fáðu


Búðu til Nginx skyndiminni (hefðbundið skyndiminni fyrir disk)

Í fyrsta dæminu muntu búa til möppu og bæta svæði við Nginx miðlarablokkina þína með hefðbundnum kyrrstöðuskrám í skyndiminni á disk. Til lengri tíma litið, ef þú ert ekki að nota SSD, getur þetta stundum verið neikvæður þáttur. Jafnvel, jafnvel með SSD, getur stöðug skrif stytt lífslíkur eftir aldri og gæðum harða disksins.

Fyrst skaltu búa til möppuna til að geyma skyndiminnisgögnin:

sudo mkdir -p /cache/tmpfs/

Næst skaltu bæta eftirfarandi við netþjónablokkina þína, breyta núverandi proxy-miðlarablokk og bæta við aukahlutunum.

proxy_cache_path /cache/nginx/tmpfs levels=1:2 keys_zone=my_zone:100m max_size=6g inactive=1d use_temp_path=off;

server {
    ...
    location / {
        proxy_cache my_zone;
        proxy_cache_key $scheme$request_method$proxy_host$request_uri;
        proxy_cache_valid 404 302 1m;
        proxy_cache_valid 200 1d;
        proxy_http_version   1.1;
        add_header X-Cache-Status $upstream_cache_status;
    }
    ...
}

Athugaðu, vertu viss um að (proxy_cache_path) fari inn í HTTP hlutann en ekki netþjónsblokkina. Einnig verða skráarslóðirnar að vera algjörar, annars virkar það ekki. Á heildina litið hefur handbókin fjarlægt skrárnar sem ekki er snert í 24 klukkustundir og staðfestingu skyndiminni í 24 klukkustundir áður en þær eru endurnýjaðar.

Hér er sundurliðun á Nginx hugtökum.

  • lykla_svæði: setur upp samnýtt minnissvæði til að geyma skyndiminnislyklana og lýsigögn eins og notkunartímamæli. Að hafa afrit af lyklunum í minni gerir NGINX kleift að ákvarða fljótt hvort beiðni sé það (HIT) eða (UFFRÚ) án þess að þurfa að fara á disk, sem flýtir mjög fyrir ávísuninni. 1 MB svæði getur geymt gögn fyrir um 8,000 lykla, þannig að 10 MB svæði sem er stillt í dæminu getur geymt gögn fyrir um 80,000 lykla.
  • óvirkt: tilgreinir hversu lengi hlutur getur verið í skyndiminni án þess að fá aðgang að honum. Í þessu dæmi er skrá sem ekki hefur verið beðið um í 60 mínútur sjálfkrafa eytt úr skyndiminni með skyndiminnisstjóraferlinu, óháð því hvort hún er útrunninn eða ekki. Sjálfgefið gildi er 10 mínútur (10m). Óvirkt efni er ólíkt útrunnu efni. NGINX eyðir ekki sjálfkrafa efni sem er útrunnið eins og skilgreint er af skyndiminnisstýringarhaus (Cache-Control:max-age=120 til dæmis). Útrunnið (gamalt) efni er aðeins eytt þegar það hefur ekki verið opnað í þann tíma sem óvirkt er tilgreint. Þegar útrunnið efni er opnað endurnýjar NGINX það frá upprunaþjóninum og endurstillir óvirka tímamælirinn.
  • hámarksstærð: setur efri mörk stærðar skyndiminni (í 10 gígabæt í þessu dæmi). Það er valfrjálst; ekki tilgreint gildi gerir skyndiminni kleift að stækka til að nota allt tiltækt pláss. Þegar skyndiminnisstærðin nær takmörkunum, fer ferli sem kallast skyndiminni stjórnandi fjarlægir þær skrár sem voru síst notaðar til að koma stærð skyndiminni aftur undir mörkin.
  • proxy_cache_path: skráarslóðin að skyndiminni möppunni sem þú bjóst til.
  • add_header X-Cache-Status $upstream_cache_status: bætir við X-Cache-Status HTTP haus í svörum til viðskiptavina

Viðbótarvalkostir hér að neðan gætu gagnast þjóninum þínum í tengslum við upprunalegu proxy skyndiminni stillingar:

  • proxy_cache_revalidate: gefur NGINX fyrirmæli um að nota skilyrt (FÁÐU) beiðnir þegar þú endurnýjar efni frá upprunaþjónum. Ef viðskiptavinur biður um hlut sem er í skyndiminni en útrunninn eins og skilgreint er af skyndiminnisstýringarhausunum, inniheldur NGINX (Ef-Breytt-Síðan) reit í hausnum á (FÁÐU) biðja um að það sendir til upprunaþjónsins. Þetta sparar bandbreidd, vegna þess að þjónninn sendir aðeins hlutinn í heild sinni ef honum hefur verið breytt frá þeim tíma sem skráður var í (Síðast breytt) haus festur við skrána þegar NGINX setti hana upphaflega í skyndiminni.
  • proxy_cache_min_uses: stillir fjölda skipta sem viðskiptavinir þurfa að biðja um áður en NGINX vistar hann í skyndiminni. Þetta er gagnlegt ef skyndiminni er stöðugt að fyllast, þar sem það tryggir að aðeins þeim hlutum sem oftast er farið í er bætt við skyndiminni. Sjálfgefið (proxy_cache_min_uses) er stillt á 1.
  • proxy_cache_background_update : The (uppfærsla) breytu til (proxy_cache_use_stale) tilskipun, ásamt því að gera kleift (proxy_cache_background_update) tilskipun, gefur NGINX fyrirmæli um að afhenda gamaldags efni þegar viðskiptavinir biðja um hlut sem er útrunninn eða er í uppfærslu frá upprunaþjóninum. Allar uppfærslur verða gerðar í bakgrunni. Gömlu skránni er skilað fyrir allar beiðnir þar til uppfærðu skránni er að fullu hlaðið niður.
  • proxy_cache_lock: Með (proxy_cache_lock) virkt, ef margir viðskiptavinir biðja um skrá sem er ekki núverandi í skyndiminni a (UFFRÚ), aðeins fyrstu þessara beiðna er hleypt inn á upprunaþjóninn. Beiðnirnar sem eftir eru bíða eftir að beiðnin verði uppfyllt og draga síðan skrána úr skyndiminni. Án (proxy_cache_lock) virkjað, allar beiðnir sem leiða til þess að skyndiminni missir fara beint á upprunaþjóninn.

Nginx skyndiminni í vinnsluminni

Ef netþjónninn þinn hefur tilföngin, mun skyndiminni í vinnsluminni alltaf vera betra en að vista skrár á disk, þetta á jafnvel við um nýjustu SSD drif. Þetta miðar að sjálfstýrðum netþjónum og hefur mikið úrræði eins og hrútur sem situr og gerir ekki neitt. Þú getur hugsanlega sett upp frábæra skyndiminni sem mun hafa tafarlaus áhrif á hleðslu vefsíðunnar þinnar.

Fyrst skaltu búa til nýja möppu fyrir skyndiminni í vinnsluminni:

sudo mkdir -p /cache/nginx/tmpfs

Í öðru lagi skaltu tengja búið til möppu í vinnsluminni með (tmpfs) með eftirfarandi skipun:

sudo mount -t tmpfs -o size=2g tmpfs /cache/nginx/tmpfs

Þetta hækkar (/data/nginx/tmpfs) í vinnsluminni, sem úthlutar 2 GB. Þetta er hægt að stilla hækkandi eða minnkandi. Minni netþjónar myndu byrja með 512MB í stað 2g. Hins vegar er ekkert rétt eða rangt svar þar sem hver netþjónn er öðruvísi.

Ef þú þarft að aftengja skaltu keyra eftirfarandi kóða:

sudo umount /cache/nginx/ramcache

Til að klára uppsetninguna með vinnsluminni skyndiminni með Nginx þarftu að bæta eftirfarandi við (/etc/fstab), þannig að þegar þjónninn er endurræstur sjálfkrafa verður vinnsluminni skyndiminni skráin endurbúin.

opna (/etc/fstab) skrá með nanó:

sudo nano /etc/fstab

Sláðu inn eftirfarandi og stilltu skyndiminni staðsetningu þína og stærð:

tmpfs /cache/nginx/tmpfs tmpfs defaults,size=1g 0 0

Fáðu


Nginx Proxy Buffering

Ef þú ert að nota Nginx öfugt umboð er góð leið til að auka afköst að nota umboðsbuff. Þetta tengist því hvernig Nginx meðhöndlar svarið sem berast frá umboðsþjóninum. Þetta þýðir að ekki er spurt um proxy-þjóninn fyrir hverja beiðni viðskiptavinar, en gögnin eru afgreidd úr skyndiminni ef skyndiminni gögnin eru enn talin gild (líftíminn er ekki liðinn).

Vinnudæmi hér að neðan:

#Enables or disables buffering of responses from the proxied server.
proxy_buffering on;
 
#proxy buffer cache sizes
proxy_buffers 4 256k;
proxy_buffer_size 128k; 
proxy_busy_buffers_size 256k;

WordPress skyndiminni

Ofangreind dæmi virka mjög vel með WordPress vefsíðum. Hins vegar verður þörf á nokkrum viðbótarreglum til að tryggja að við séum ekki í skyndiminni sumum tilföngum af öryggisástæðum meðal efstu.

Í fyrsta lagi skaltu halda þessu fyrir ofan (staðsetningar) svæðið þitt sem er í skyndiminni í netþjónsblokkskránni þinni:

set $skip_cache 0;

# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
    set $skip_cache 1;
}
if ($query_string != "") {
    set $skip_cache 1;
}

# Don't cache uris containing the following segments
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|^/feed/*|/tag/.*/feed/*|index.php|/.*sitemap.*\.(xml|xsl)") {
    set $skip_cache 1;
}

# Don't use the cache for logged in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}

Eins og þú sérð erum við að sleppa skyndiminni á (POST) beiðnum með fyrirspurnarstreng sem ætti alltaf að fara í PHP og ekki í skyndiminni á öllum vefslóðum sem innihalda hversdagslega hluti eins og strauma, vefkort o.s.frv.

Næst skaltu bæta við eftirfarandi tveimur línum í skyndiminni þinn:

        proxy_cache_bypass $skip_cache;
        proxy_no_cache $skip_cache;

Fyrir nýrri notendur sem vilja sjá heilt dæmi, sjáðu hér að neðan í vinnuumhverfi:

    location / {
        proxy_pass http://webserver;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache my_zone;
        proxy_cache_key $scheme$request_method$proxy_host$request_uri;
        proxy_cache_valid 404 302 1m;
        proxy_cache_valid 200 31d;
        add_header X-Cache-Status $upstream_cache_status;
        proxy_buffering on;
        proxy_buffers 256 16k;
        proxy_buffer_size 32k;
        proxy_http_version   1.1;
        proxy_cache_bypass $skip_cache;
        proxy_no_cache $skip_cache;
    }
}

Fáðu


Skyndiminni Nginx vafra

Skyndiminni vafra er frábær leið til að draga úr álagi á netþjóna, sérstaklega ef þú rekur blogg eða annað svipað efni. Þú getur stillt lengri tíma til að versla og bullet spjallborð þar sem kraftmikið efni breytist oftar en ekki.

Algengustu dæmin um vinsæl veiði eru hér að neðan. Sláðu þetta inn í netþjóninn þinn.

  # assets, media
  location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
  expires    365d;
  access_log off;
  }
  
  # svg, fonts
  location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
  add_header Access-Control-Allow-Origin "*";
  expires    365d;
  access_log off;
  }

Til að spara á IO og skráningu á diski geturðu lýst yfir að þessi tilföng séu slökkt í aðgangsskránni þinni til að auka afköst á þjóninum ef þú ert í erfiðleikum með hærri hleðslutíma.

Athugasemdir og niðurstaða

Í kennslunni lærðir þú hvernig á að nota Nginx proxy skyndiminni með því að nota skrár og vinnsluminni. Fyrir frekari upplýsingar um skyndiminni Nginx, skoðaðu Nginx skyndiminni skjöl til að læra mikið þar sem það er ansi umfangsmikið og fleiri valkostir. Hægt er að gera aukahluti þar sem leiðarvísirinn er nýbúinn að klóra yfirborðið af því sem raunverulega er hægt að gera.

Leyfi a Athugasemd