Mete kanpe Nginx FastCGI Cache sou Ubuntu 20.04

Nginx se yon sèvè aplikasyon entènèt pwisan. Sepandan, ansanm ak sitiyasyon LEMP, PHP yo konnen yo ralanti ak demann ki bezwen ale nan PHP-FPM, ki Lè sa a, demann baz done MySQL/MariaDB, Lè sa a, Nginx pral jenere yon paj HTML estatik ki Lè sa a, delivre tounen nan Nginx.

Se konsa, si yon sèvè sit entènèt se anba chaj lou, depans anlè yo ogmante dramatikman. Sepandan, Nginx gen sipò pou yon solisyon kachèt ak FastCGI pou redwi anlè a pèmèt yon sèvè okipe plis demann paj ak fichye nan demann yo te sèvi nan yon kachèt olye pou yo oblije fè wout la antye pou ale nan baz done a ak tounen lakay ou.

Yo pral montre w ki jan yo mete l sou yon sèvè Nginx sou Ubuntu 20.04 LTS Focal nan gid sa a.

Kondisyon

  • Ubuntu sèvè 20.04 oswa ivè.
  • LEMP Stack (Nginx, PHP, MariaDB)
  • Aksè rasin oswa yon kont ki gen privilèj sudo.
  • Curl enstale
  • Pake sistèm ajou.
sudo apt update && sudo apt upgrade -y \
 sudo apt install curl

reklam


Ki jan yo konfigure Nginx FastCGI Cache

Edit dosye konfigirasyon Nginx

Ou pral bezwen louvri dosye nginx.conf ou a ak yon editè tèks nan premye pati a. Gid la pral sèvi ak editè tèks nano.

sudo nano /etc/nginx/nginx.conf

Koulye a, nan pati HTTP a, w ap bezwen liy sa yo.

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

Yon fwa antre, CTRL + O Lè sa a, tape "Y", Lè sa a, CTRL + X pou sòti.

Eksplikasyon sou paramèt ou te antre nan fichye nginx.conf ou a.

  • fastcgi_cache_path - presize kote kachèt FastCGI ou a (/var/nginx/fastcgi_cache/).
  • nivo = 1:2 – kreye yon yerachi anyè de nivo anba kote kachèt ou a. Objektif sa a se gaye dosye nan de repèrtwar olye pou yo tout fichye yo te mande nan menm sous la, ki ka lakòz ralentissement.
  • keys_zone – presize non non zòn memwa pataje (fastcgi_cache) ak gwosè li (120M). Sa a se zòn memwa pou estoke kle kachèt ak metadata pandan demann.
  • max_size - fikse gwosè maksimòm kachèt la. Egzanp lan montre 20GB. Yon fwa ranpli, li pral Lè sa a, retire dosye ki pi itilize yo. Si w pa ranje sa a pral wè tout disk la ranpli.
  • inaktif – retire done ki te inaktif pou yon peryòd espesifik. Nan egzanp lan, li fikse pou 60 minit. Remake byen, ou ka mete sa a wo tankou ou renmen oswa osi ba.
  • itilize_temp_path – enstriksyon Nginx pou ekri dosye pou kachèt la dirèkteman nan katab ou espesifye a epi evite Nginx kopye fichye yo an premye nan yon zòn depo tanporè ki pa nesesè.
  • fast_cgi_cache_key – defini kle pou rechèch kachèt. Nginx ajoute yon fonksyon hash MD5sum sou kle kachèt la epi sèvi ak rezilta hash la kòm non dosye kachèt.

Edit blòk sèvè Nginx

Koulye a, ou bezwen mete kanpe blòk sèvè ou a. Premyèman, louvri blòk kote ou a jan sa a.

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

Avèk LEMP deja enstale, w ap gen yon blòk kote pou (~/.php$) pou ajoute sa ki annapre yo.

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 Cache Purge

Koulye a, kreye yon direktiv Cache Purge si kachèt la bezwen pirifye manyèlman.

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

Yon fwa antre, CTRL + O Lè sa a, tape "Y", Lè sa a, CTRL + X pou sòti.

Koulye a, teste konfigirasyon Nginx ou anvan yon rekòmanse.

sudo nginx -t

Pwodiksyon an ta dwe si kòrèk:

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

Koulye a, rekòmanse sèvè Nginx ou a pou chanjman yo pran efè.

sudo systemctl restart nginx

Eksplikasyon sou paramèt ou te antre nan fichye blòk sèvè ou a (example.com.conf).

  • fastcgi_cache – sa a enstwi Nginx pou pèmèt kachèt lè l sèvi avèk zòn memwa defini mete nan (fastcgi_cache_path) nan konfigirasyon Nginx.conf ou a.
  • fastcgi_cache_valid – fikse tan kachèt HTTP estati kòd yo, sa a ka modifye nan peryòd ki pi kout, oswa pi long osi byen ou ka chanje kòd estati yo. Pa retire kòd 200, ki dwe rete tout tan.
  • fastcgi_cache_use_stale – fikse kantite fwa kliyan yo mande resous la anvan Nginx kachèt li.
  • fastcgi_cache_lock – lè yo mete sou li, premye demann yo sèvi an premye, ak lòt moun ap tann pou demann sa yo dwe ranpli an premye. Si yo mete nan koupe, tout demann ale tou dwat nan sèvè PHP-FPM la.
  • add_header – ajoute yon header X-FastCGI-Cache nan repons HTTP. Sa a pral montre si kachèt FastCGI a te sèvi demann lan oswa ou pa ak yon frape oswa rate.

Kreye Dosye pou FastCGI Cache

Kreye yon katab ke nou espesifye nan chemen nou an pou Nginx kache dosye yo tou.

sudo mkdir -p /var/nginx/fastcgi_cache

reklam


Teste Nginx FastCGI Cache

Koulye a, teste kachèt ou a ak lòd curl ki anba a. Remake byen ke ou ka bezwen deklanche kòmandman an kèk fwa anvan yon kachèt frape, tou depann de anviwònman espesifye ou yo.

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

Gade nan Sòti ou pou (X-FastCGI-Cache: Frape).

~$ 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 dosye pou inyore

Sèten karakteristik sit entènèt pa ta dwe nan kachèt ditou. Pou egzanp, pou WordPress sit, seksyon kòmantè nan feed feedback / repons sou sit wèb, sitemap, pou egzanp, yo ta dwe mete pou evite. Ou ka fè sa lè w antre kòd sa a pou egzante atik sa yo anlè kote a (~\.php$) liy.

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

Si ou ta renmen debogaj, ou ka ajoute anba chak (mete $skip_cache 1;) sa ki annapre yo pou pèmèt.

set $skip_reason "note of your choice";

reklam


Kòmantè ak konklizyon

Avèk yon konfigirasyon Nginx ak LEMP ki deja egziste, gid la montre w kouman pou aplike yon direktiv FastCGI Cache sou sèvè w la, sa ki ka amelyore pèfòmans lè w diminye kantite demann PHP-FPM ou a pandan lè gwo yo. Sa a pral Lè sa a, ale nan diminye chaj sistèm, ki tout sit entènèt fè efò pou pèfeksyon.

FastCGI se benefisye pou sit entènèt CMS tankou WordPress ki gen grefon ki ka travay men nan men ak teknoloji kachèt la, epi yo ka jwenn sa yo nan seksyon yo plugin nan pwodwi CMS sa yo.

Ban-m pran abònman
Notifye nan
0 kòmantè
Aliye komantè
Wè tout kòmantè
0
Ta renmen panse ou, tanpri fè kòmantè.x