Nginx Optimization Tuning na Caching

Nginx bụ ngwa weebụ dị ike iji kwado webụsaịtị. Ka oge na-aga, Nginx emechaala karịa Apache na ngwanrọ sava weebụ a na-ejikarị eme ihe mgbe emechara ya na mbido 2000s, ọkachasị n'ihi arụmọrụ yana ikike ịbụ karịa sava weebụ ọdịnala. Otu n'ime ọtụtụ ihe a na-eji Nginx eme ihe ka a na-ebuga ya ka ọ bụrụ onye nnọchi anya ma ọ bụ ihe nkwụnye ibu.

Agbanyeghị, otu njirimara na-atụfu ọtụtụ oge mgbe ebugara ya dị ka ihu maka sava azụ. Nke ahụ bụ ikike Nginx nwere karịa HAProxy n'inweta akụrụngwa static dị mfe na ịde ederede na diski ma ọ bụ ọ bụrụ na ị nwere ihe nkesa beefy nwere nnukwu RAM na-agbakwunye cache na ebe nchekwa maka arụmọrụ kacha.

N'ime nkuzi a, ị ga-ahụ ụfọdụ ọmụmaatụ otu esi eme nke a, na-enye ihe nkesa Nginx gị ozugbo ma ọ bụrụ na ị na-eji Nginx n'ọnọdụ ntụgharị proxy.

Prerequisites

  • OS akwadoro: Sistemụ arụmọrụ Linux ọ bụla etinyere Nginx.
  • Akaụntụ onye ọrụ: Akaụntụ onye ọrụ nwere sudo ma ọ bụ ohere mgbọrọgwụ.

Advertisement


Mepụta cache Nginx ( cache diski ọdịnala)

Na ọmụmaatụ nke mbụ, ị ga-emepụta ndekọ ma tinye mpaghara na ngọngọ nkesa Nginx gị na faịlụ caching static omenala na diski. N'ime ogologo oge, Ọ bụrụ na ị naghị eji SSD, nke a nwere ike bụrụ ihe na-adịghị mma mgbe ụfọdụ. Ọzọkwa, ọbụlagodi na SSD, ide ihe mgbe niile nwere ike belata ndụ ndụ dabere na afọ na ogo draịvụ ike.

Mbụ, mepụta ndekọ iji chekwaa data cache:

sudo mkdir -p /cache/tmpfs/

Na-esote, tinye ihe ndị a na ngọngọ nkesa gị, gbanwee ngọngọ proxy nke dị adị, ma tinye mgbakwunye.

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;
    }
    ...
}

Mara, jide n'aka na (proxy_cache_path) na-abanye na akụkụ HTTP ọ bụghị ngọngọ nkesa. Ọzọkwa, ụzọ faịlụ ga-abụ nke zuru oke, ma ọ bụghị ya, ọ gaghị arụ ọrụ. N'ozuzu, ntuziaka ahụ emetụghị faịlụ ndị ahụ maka awa 24 wepụrụ yana nkwado cache maka awa 24 tupu enwee ume ọhụrụ.

Nke a bụ ndakpọ okwu Nginx.

  • igodo_mpaghara: na-edobe mpaghara ebe nchekwa nkekọrịta maka ịchekwa igodo cache na metadata dị ka ngụ oge ojiji. Inwe otu igodo na ebe nchekwa na-enyere NGINX aka ikpebi ngwa ngwa ma ọ bụrụ arịrịọ (HIT) ma ọ bụ a (MISS) na-enweghị ịga diski, na-eme ka nlele ahụ dịkwuo ngwa. Mpaghara 1-MB nwere ike ịchekwa data maka ihe dị ka igodo 8,000, yabụ mpaghara 10-MB ahaziri na ihe atụ nwere ike chekwaa data maka ihe dị ka igodo 80,000.
  • adịghị arụ ọrụ: na-akọwapụta ogologo oge ihe nwere ike ịdị na cache na-enwetaghị ya. N'ihe atụ a, faịlụ a na-arịọghị maka nkeji 60 na-ehichapụ ya na-akpaghị aka na cache site na usoro njikwa cache, n'agbanyeghị ma ọ kubiela ma ọ bụ na ọ pụghị. Uru ndabara bụ nkeji iri (10 m). Ọdịnaya anaghị arụ ọrụ dị iche na ọdịnaya emebiela. NGINX anaghị ehichapụ ọdịnaya emebiela ozugbo dịka isi njikwa cache kọwara (Cache-Control: max-age=120 ọmụmaatụ). Kubie ume (nke ochie) A na-ehichapụ ọdịnaya naanị mgbe enwetaghị ya maka oge nke anaghị arụ ọrụ akọwapụtara. Mgbe enwetara ọdịnaya kubie ume, NGINX na-eme ka ọ dị ọhụrụ site na sava mmalite wee tọgharịa ngụ oge anaghị arụ ọrụ.
  • max_size: na-edobe oke oke nke cache (ruo 10 gigabytes na ihe atụ a). Ọ bụ nhọrọ; akọwaghị uru na-enye ohere cache itolite iji ohere diski niile dị. Mgbe nha cache ruru oke, usoro a na-akpọ cache njikwa na-ewepụ faịlụ ndị ejiri obere oge na-eweghachi nha cache azụ n'okpuru oke.
  • ụzọ proxy_cache: ụzọ faịlụ gaa na nchekwa cache ị mepụtara.
  • add_header X-Cache-Ọnọdụ $upstream_cache_status: na-agbakwụnye nkụnye eji isi mee X-Cache-Status HTTP na nzaghachi ndị ahịa

Nhọrọ ndị ọzọ n'okpuru nwere ike ịbara ihe nkesa gị uru na njikọ nhazi cache proxy mbụ:

  • proxy_cache_revalidate: na-agwa NGINX ka o jiri ọnọdụ ( nweta) arịrịọ mgbe ọ na-enye ume ọhụrụ sitere na sava izizi. Ọ bụrụ na onye ahịa rịọrọ ihe echekwabara mana kubie ume dịka isi njikwa cache siri kọwaa, NGINX gụnyere ihe ndị a. (Ọ bụrụ-Egbanwere-Ebe) ubi na nkụnye eji isi mee nke ( nweta) Rịọ ka o ziga ya na sava mmalite. Nke a na-echekwa na bandwit, n'ihi na ihe nkesa na-eziga ihe zuru ezu naanị ma ọ bụrụ na agbanweela ya kemgbe oge edere na (Emeziri ikpeazụ) nkụnye eji isi mee agbakwunyere na faịlụ ahụ mgbe NGINX kpuchiri ya na mbụ.
  • proxy_cache_min_uses: na-esetịpụ ugboro ole ndị ahịa ga-arịọrịrị ihe tupu NGINX echekwa ya. Nke a bara uru ma ọ bụrụ na cache na-ejuputa mgbe niile, ebe ọ na-eme ka ọ bụrụ na ọ bụ naanị ihe ndị a na-enwetakarị na-agbakwunye na cache. Site na ndabara (proxy_cache_min_uses) atọrọ ka 1.
  • proxy_cache_background_update : The (na-emelite) paramita na (proxy_cache_use_stale) ntuziaka, jikọtara ya na-enyere ndị (proxy_cache_background_update) ntuziaka, na-agwa NGINX ka o wepụta ọdịnaya adịgboroja mgbe ndị ahịa na-arịọ ihe agwụla ma ọ bụ na-emelite site na ihe nkesa mmalite. A ga-eme mmelite niile n'azụ. A na-eweghachite faịlụ stale maka arịrịọ niile ruo mgbe ebudatara faịlụ emelitere nke ọma.
  • proxy_cache_lock: Na (proxy_cache_lock) enyere, ma ọ bụrụ na ọtụtụ ndị ahịa na-arịọ faịlụ na-adịghị ugbu a na cache a (MISS), naanị nke mbụ n'ime arịrịọ ndị ahụ ka a na-anabata na sava mmalite. Arịrịọ ndị fọdụrụ na-echere arịrịọ ahụ ka afọ ju wee wepụ faịlụ ahụ na cache. Enweghị (proxy_cache_lock) agbanyere, arịrịọ niile na-ebute cache efu na-aga ozugbo na sava mmalite.

Nginx cache na RAM

Ọ bụrụ na ihe nkesa gị nwere ihe onwunwe, caching n'ime RAM ga-adị mma mgbe niile karịa ịchekwa faịlụ na diski, nke a na-emetụta draịva SSD nke ọgbara ọhụrụ. Ezubere nke a maka sava jikwaa onwe ya ma nwee nnukwu akụrụngwa dịka ebule ịnọdụ ala na-eme ihe ọ bụla. Ị nwere ike ịtọlite ​​ụfọdụ nnukwu ebe nchekwa cach nke ga-enwe mmetụta ozugbo na nbudata weebụsaịtị gị.

Nke mbụ, mepụta ndekọ ọhụrụ maka caching na RAM:

sudo mkdir -p /cache/nginx/tmpfs

Nke abuo, bulite ndekọ emepụtara na RAM ya (tmpfs) na-eji iwu a:

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

Nke a na-ebuli (/data/nginx/tmpfs) na RAM, na-ekenye 2 GB. Enwere ike gbanwee nke a na-abawanye ma ọ bụ na-ebelata. Obere sava ga-eji 512MB malite kama 2g. Agbanyeghị, ọ nweghị azịza ziri ezi ma ọ bụ na-ezighi ezi dịka nkesa ọ bụla dị iche.

Ọ bụrụ na ịchọrọ iwepụ, mebie koodu a:

sudo umount /cache/nginx/ramcache

Iji mechaa ntọlite ​​​​na RAM caching na Nginx, ịkwesịrị ịgbakwunye ihe ndị a na (/ wdg/fstab), Ya mere, mgbe arụgharịrị ihe nkesa na-akpaghị aka, a ga-emepụta ndekọ cache RAM ọzọ.

Meghee (/etc/fstab) faịlụ site na iji nano:

sudo nano /etc/fstab

Tinye ihe ndị a wee gbanwee n'ọnọdụ ebe nchekwa gị na nha gị:

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

Advertisement


Nginx Proxy Buffering

Ọ bụrụ na ị na-eji Nginx reverse proxy ụzọ dị mma iji welie arụmọrụ bụ iji proxy buffering. Nke a metụtara otu Nginx si ejikwa nzaghachi enwetara n'aka sava proxied. Nke a pụtara na a naghị ajụ ihe nkesa proxied maka arịrịọ ndị ahịa ọ bụla, mana a na-enye data ahụ site na cache ma ọ bụrụ na a ka na-ahụta data echekwara dị ka nke ọma. ( Lifetime agafebeghị).

Ihe atụ na-arụ ọrụ n'okpuru:

#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 Caching

Ihe atụ ndị a dị n'elu na-arụ ọrụ nke ọma na weebụsaịtị WordPress. Agbanyeghị, a ga-achọ ụfọdụ iwu ndị ọzọ iji hụ na anyị anaghị echekwa ụfọdụ akụrụngwa maka ebumnuche nchekwa n'etiti ndị kacha.

Nke mbụ, tinye nke a n'elu ebe (ebe) gị nke a na-echekwa na faịlụ ngọngọ sava gị:

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;
}

Dịka ị na-ahụ, anyị na-eji eriri ajụjụ na-awụgharị cache na arịrịọ (POST) nke kwesịrị ịga na PHP mgbe niile ma ọ bụghị caching na URL niile nwere ụfọdụ ihe kwa ụbọchị dịka ntanetịime, saịtị saịtị, wdg.

Na-esote, tinye ahịrị abụọ ndị a na ebe nchekwa gị:

        proxy_cache_bypass $skip_cache;
        proxy_no_cache $skip_cache;

Maka ndị ọrụ ọhụrụ chọrọ ịhụ ọmụmaatụ zuru oke, lee n'okpuru ebe a na-arụ ọrụ:

    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;
    }
}

Advertisement


Nginx Browser Caching

Nchọgharị caching bụ nnukwu ụzọ iji belata ibu dị na sava, ọkachasị ma ọ bụrụ na ị na-agba blọgụ ma ọ bụ ọdịnaya ndị ọzọ yiri ya. Ị nwere ike ịtọ ogologo oge maka ịzụ ahịa na nnọkọ mgbọ ebe ọdịnaya na-agbanwe agbanwe na-agbanwekarị karịa.

Ihe atụ kachasị ewu ewu nke nwude bụ n'okpuru. Tinye nke a na ngọngọ nkesa gị.

  # 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;
  }

Ka ịchekwaa na diski IO na ịdenye aha, ị nwere ike ikwuwapụta akụrụngwa ndị a na ndekọ ohere gị ka iwelie arụmọrụ na sava ma ọ bụrụ na ị na-agbasi mbọ ike na oge ibu dị elu.

Okwu na mmechi

N'ime nkuzi a, ị mụtara ka esi eji faịlụ na RAM na Nginx proxy cache. Maka ozi ndị ọzọ gbasara caching Nginx, gaa na Nginx Caching akwụkwọ iji mụta ọtụtụ ihe n'ihi na ọ mara mma yana nhọrọ ndị ọzọ. Enwere ike ịmekwu ihe dịka onye ndu ka kpụchara elu nke ihe enwere ike ime n'ezie.

Idenye aha
Gwa nke
0 Comments
Inline nzaghachi
Lee echiche niile
0
Ga-ahụ n'anya gị echiche, biko okwu.x