Settu upp Nginx FastCGI Cache á Ubuntu 20.04

Nginx er öflugur vefforritaþjónn. Hins vegar, ásamt LEMP aðstæðum, er vitað að PHP er hægt með beiðnir sem þurfa að fara í PHP-FPM, sem síðan leitar í MySQL/MariaDB gagnagrunn, þá mun Nginx búa til kyrrstæða HTML síðu sem er síðan afhent til Nginx.

Svo ef vefþjónn er undir miklu álagi eykst kostnaður verulega. Hins vegar hefur Nginx stuðning fyrir skyndiminni lausn með FastCGI til að draga úr kostnaði sem gerir netþjóni kleift að sjá um fleiri síðubeiðnir með eftirspurnar skrár sem eru bornar fram úr skyndiminni í stað þess að þurfa að fara alla leiðina til að fara í gagnagrunninn og til baka.

Þér verður sýnt hvernig á að setja það upp á Nginx netþjóni á Ubuntu 20.04 LTS Focal í eftirfarandi handbók.

Forsendur

  • Ubuntu Server 20.04 eða áfram.
  • LEMP stafla (Nginx, PHP, MariaDB)
  • Rótaraðgangur eða reikningur með sudo réttindi.
  • Curl er sett upp
  • Uppfærðir kerfispakkar.
sudo apt update && sudo apt upgrade -y \
 sudo apt install curl

Fáðu


Hvernig á að stilla Nginx FastCGI skyndiminni

Breyta Nginx stillingarskrá

Þú þarft að opna nginx.conf skrána þína með textaritli í fyrsta hluta. Leiðbeiningin mun nota nanó textaritilinn.

sudo nano /etc/nginx/nginx.conf

Nú, í HTTP hlutanum, þarftu eftirfarandi línur.

fastcgi_cache_path /var/nginx/fastcgi_cache levels=1:2 keys_zone=fcgicache:150m max_size=20g inactive=60m use_temp_path=off;
 fastcgi_cache_key "$scheme$request_method$host$request_uri";

Þegar þú hefur slegið inn, CTRL+O sláðu síðan inn „Y“, síðan CTRL+X til að hætta.

Útskýring á stillingunum sem þú slóst inn í nginx.conf skrána þína.

  • fastcgi_cache_path - tilgreinir staðsetningu FastCGI skyndiminni þíns (/var/nginx/fastcgi_cache/).
  • stig=1:2 – býr til tveggja stiga skráarstigveldi undir skyndiminni þinni. Tilgangurinn með þessu er að dreifa skrám í tvær möppur í stað þess að beðið sé um allar skrár frá sama uppruna, sem getur valdið hægagangi.
  • lykla_svæði – tilgreinir nafn samnýtts minnissvæðis (fastcgi_cache) og stærð þess (120M). Þetta er minnissvæðið til að geyma skyndiminnislykla og lýsigögn meðan á eftirspurn stendur.
  • hámarksstærð – stillir hámarksstærð skyndiminni. Dæmið sýnir 20GB. Þegar það er fyllt mun það síðan fjarlægja mest notuðu skrárnar. Takist ekki að laga þetta mun allur diskurinn fyllast.
  • óvirkt – fjarlægja gögn sem hafa verið óvirk í tiltekinn tíma. Í dæminu er það stillt á 60 mínútur. Athugaðu, þú getur stillt þetta eins hátt og þú vilt eða eins lágt.
  • use_temp_path – leiðbeiningar Nginx um að skrifa skrár fyrir skyndiminni beint í möppuna sem þú tilgreindir og forðast að Nginx afriti skrárnar fyrst á tímabundið geymslusvæði sem ekki er þörf á.
  • fast_cgi_cache_key – skilgreinir lykilinn fyrir skyndiminni leit. Nginx bætir við MD5sum kjötkássaaðgerð á skyndiminni lyklinum og notar kjötkássa niðurstöðu sem heiti skyndiminni skráa.

Breyta Nginx Server Block

Nú þarftu að setja upp netþjónablokkina þína. Fyrst skaltu opna staðsetningarblokkina þína eins og hér segir.

sudo nano /etc/nginx/sites-available/example.com.conf

Með því að hafa LEMP þegar uppsett muntu hafa staðsetningarblokk fyrir (~/.php$) til að bæta eftirfarandi við.

fastcgi_cache fcgicache;
 fastcgi_cache_valid 200 60m;
 fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
 fastcgi_cache_min_uses 1;
 fastcgi_cache_lock on;
 add_header X-FastCGI-Cache $upstream_cache_status;

FastCGI skyndiminni hreinsun

Búðu til tilskipun um hreinsun skyndiminni ef hreinsa þarf skyndiminni handvirkt.

Fastcgi-Purge Config
 location ~ /purge(/.*) {
 Uncomment the following two lines to allow purge only from the webserver
 allow 127.0.0.1;
 deny all;
 fastcgi_cache_purge fcgicache "$scheme$request_method$host$1";
 } 

Þegar þú hefur slegið inn, CTRL+O sláðu síðan inn „Y“, síðan CTRL+X til að hætta.

Prófaðu nú Nginx stillinguna þína áður en þú endurræsir.

sudo nginx -t

Úttakið ætti að vera ef rétt:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 nginx: configuration file /etc/nginx/nginx.conf test is successful

Endurræstu nú Nginx netþjóninn þinn til að breytingar taki gildi.

sudo systemctl restart nginx

Útskýring á stillingunum sem þú slóst inn í blokkaskrá netþjónsins (example.com.conf).

  • fastcgi_cache – þetta gefur Nginx fyrirmæli um að virkja skyndiminni með því að nota minnissvæðið sem skilgreint er í (fastcgi_cache_path) í Nginx.conf uppsetningunni þinni.
  • fastcgi_cache_valid – stillir skyndiminni HTTP stöðukóða, þetta er hægt að breyta í styttri eða lengri tíma auk þess sem þú getur breytt stöðukóðum. Ekki fjarlægja kóða 200, sem verður að vera alltaf.
  • fastcgi_cache_use_stale – stillir fjölda skipta sem tilfangið er beðið um af viðskiptavinum áður en Nginx vistar það.
  • fastcgi_cache_lock – þegar kveikt er á þeim eru fyrstu beiðnir afgreiddar fyrst, en aðrir bíða eftir að þeim beiðnum verði lokið fyrst. Ef slökkt er á því fara allar beiðnir beint á PHP-FPM þjóninn.
  • add_header – bætir við X-FastCGI-Cache haus í HTTP svarinu. Þetta mun sýna hvort FastCGI skyndiminni þjónaði beiðninni eða ekki með höggi eða missi.

Búðu til möppu fyrir FastCGI skyndiminni

Búðu til möppu sem við tilgreindum í slóð okkar fyrir Nginx til að vista skrárnar líka.

sudo mkdir -p /var/nginx/fastcgi_cache

Fáðu


Prófaðu Nginx FastCGI skyndiminni

Prófaðu nú skyndiminni þinn með krulluskipuninni hér að neðan. Athugaðu að þú gætir þurft að kveikja á skipuninni nokkrum sinnum áður en skyndiminni smellur, allt eftir tilgreindum stillingum.

curl -I http://www.your-domain.com

Leitaðu í úttakinu þínu fyrir (X-FastCGI-skyndiminni: Hit).

~$ curl -I https://www.linuxcapable.com/
 HTTP/1.1 200 ok
 Date: Wed, 16 Jun 2021 06:22:42 GMT
 Connection: keep-alive
 Cache-Control: max-age=3600
 Expires: Wed, 16 Jun 2021 07:22:42 GMT
 Location: https://www.linuxcapable.com
 cf-request-id: 0ab51591810000df280931a000000001
 NEL: {"report_to":"cf-nel","max_age":604800}
 X-FastCGI-Cache: Hit
 X-Content-Type-Options: nosniff
 Server: cloudflare
 CF-RAY: 6601f1fc091cdf28-MEL

FastCGI Cache skrár til að hunsa

Ákveðna eiginleika vefsíðu ætti alls ekki að vera í skyndiminni. Til dæmis, fyrir WordPress síður, athugasemdahluta í endurgjöf/svarstraumi vefsíðna, vefkort, til dæmis, ætti að vera stillt til að forðast. Þú getur gert þetta með því að slá inn eftirfarandi kóða til að undanþiggja þessa hluti fyrir ofan staðsetninguna (~\.php$) lína.

cache by default
 set $skip_cache 0;
 do not cache uri's containing the following, add more as required
 if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-..php|^/feed/|/tag/./feed/|index.php|/.sitemap..(xml|xsl)") {
     set $skip_cache 1;
 }
 do not use the cache for logged in users/comments
 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
     set $skip_cache 1;
 }
 requests with query string go straight to PHP not cache.
 if ($request_method = POST) {
     set $skip_cache 1;
 }
 if ($query_string != "") {
     set $skip_cache 1;
 }

Ef þú vilt kemba geturðu bætt við undir hverri (settu $skip_cache 1;) eftirfarandi til að virkja.

set $skip_reason "note of your choice";

Fáðu


Athugasemdir og niðurstaða

Með núverandi Nginx og LEMP uppsetningu hefur handbókin sýnt þér hvernig á að innleiða FastCGI Cache tilskipun á netþjóninn þinn, sem getur bætt afköst með því að fækka beiðnum til PHP-FPM á álagstímum. Þetta mun síðan halda áfram að draga úr kerfisálagi, sem allar vefsíður leitast við að fullkomna.

FastCGI er gagnlegt fyrir CMS vefsíður eins og WordPress sem eru með viðbætur sem geta unnið hönd í hönd með skyndiminni tækninni, og þær má finna í viðbótahlutum þessara CMS vara.

Leyfi a Athugasemd