Postavite Nginx FastCGI Cache na Ubuntu 20.04

Nginx je moćan poslužitelj web aplikacija. Međutim, u kombinaciji s LEMP situacijama, poznato je da je PHP spor sa zahtjevima koji moraju ići na PHP-FPM, koji zatim postavlja upite MySQL/MariaDB bazi podataka, zatim će Nginx generirati statičku HTML stranicu koja se zatim vraća u Nginx.

Dakle, ako je poslužitelj web stranice pod velikim opterećenjem, režijski troškovi se dramatično povećavaju. Međutim, Nginx ima podršku za rješenje predmemorije s FastCGI-jem kako bi se smanjio opterećenje dopušta poslužitelju da obrađuje više zahtjeva za stranicama s datotekama na zahtjev koje se poslužuju iz predmemorije umjesto da mora raditi cijeli put odlaska do baze podataka i natrag.

U sljedećem vodiču bit će vam prikazano kako ga postaviti na Nginx poslužitelj na Ubuntu 20.04 LTS Focal.

Preduvjeti

  • Ubuntu poslužitelj 20.04 ili dalje.
  • LEMP stog (Nginx, PHP, MariaDB)
  • Root pristup ili račun sa sudo privilegijama.
  • Curl je instaliran
  • Ažurirani sistemski paketi.
sudo apt update && sudo apt upgrade -y \
 sudo apt install curl

Oglas


Kako konfigurirati Nginx FastCGI Cache

Uredite Nginx konfiguracijsku datoteku

Morat ćete otvoriti svoju nginx.conf datoteku s uređivačem teksta u prvom dijelu. Vodič će koristiti nano uređivač teksta.

sudo nano /etc/nginx/nginx.conf

Sada, u HTTP dijelu, trebat će vam sljedeće linije.

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

Nakon unosa, CTRL+O zatim upišite “Y”, a zatim CTRL+X za izlaz.

Objašnjenje postavki koje ste unijeli u datoteci nginx.conf.

  • fastcgi_cache_path – određuje mjesto vaše FastCGI predmemorije (/var/nginx/fastcgi_cache/).
  • razine=1:2 – stvara hijerarhiju direktorija na dvije razine ispod vaše lokacije u predmemoriji. Svrha ovoga je da se datoteke rasporede u dva direktorija umjesto da se sve datoteke traže iz istog izvora, što može uzrokovati usporavanje.
  • keys_zone – specificira naziv naziva zone dijeljene memorije (fastcgi_cache) i njezinu veličinu (120M). Ovo je memorijska zona za pohranjivanje ključeva predmemorije i metapodataka tijekom zahtjeva.
  • maksimalna_veličina – postavlja maksimalnu veličinu predmemorije. Primjer pokazuje 20 GB. Nakon što se popuni, uklanja se najčešće korištene datoteke. Ako to ne popravite, cijeli će se disk napuniti.
  • neaktivan – ukloniti podatke koji su bili neaktivni određeno razdoblje. U primjeru je postavljeno na 60 minuta. Napomena, ovo možete postaviti koliko god želite ili nisko.
  • use_temp_path – upute Nginxu da zapiše datoteke za predmemoriju izravno u mapu koju ste naveli i izbjegava da Nginx prvo kopira datoteke u privremenu memoriju koja nije potrebna.
  • brzi_cgi_cache_key – definira ključ za traženje u predmemoriji. Nginx dodaje MD5sum hash funkciju na ključ predmemorije i koristi hash rezultat kao naziv cache datoteka.

Uredite blok Nginx poslužitelja

Sada morate postaviti blok poslužitelja. Najprije otvorite svoj blok lokacije na sljedeći način.

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

Budući da je LEMP već instaliran, imat ćete blok lokacije za (~/.php$) da dodate sljedeće.

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 čišćenje predmemorije

Sada stvorite direktivu za čišćenje predmemorije ako se predmemorija treba ručno očistiti.

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

Nakon unosa, CTRL+O zatim upišite “Y”, a zatim CTRL+X za izlaz.

Sada testirajte svoju Nginx konfiguraciju prije ponovnog pokretanja.

sudo nginx -t

Izlaz bi trebao biti ako je točan:

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

Sada ponovno pokrenite svoj Nginx poslužitelj kako bi promjene stupile na snagu.

sudo systemctl restart nginx

Objašnjenje postavki koje ste unijeli u datoteku bloka poslužitelja (example.com.conf).

  • fastcgi_cache – ovo daje upute Nginxu da omogući predmemoriranje koristeći memorijsku zonu definiranu u (fastcgi_cache_path) u vašem Nginx.conf postavci.
  • fastcgi_cache_valid – postavlja HTTP statusne kodove vremena predmemorije, ovo se može promijeniti na kraća ili duža razdoblja, a možete promijeniti i statusne kodove. Nemojte uklanjati kod 200, koji mora ostati cijelo vrijeme.
  • fastcgi_cache_use_stare – postavlja koliko puta klijenti traže resurs prije nego što ga Nginx predmemorije.
  • fastcgi_cache_lock – kada je postavljeno na uključeno, prvi se poslužuju početni zahtjevi, dok drugi čekaju da se ti zahtjevi prvi dovrše. Ako je postavljeno na isključeno, svi zahtjevi idu ravno na PHP-FPM poslužitelj.
  • add_header – dodaje zaglavlje X-FastCGI-Cache u HTTP odgovor. Ovo će pokazati je li FastCGI predmemorija poslužila zahtjev ili ne uz pogodak ili promašaj.

Napravite mapu za FastCGI Cache

Stvorite mapu koju smo naveli u našem putu za Nginx za predmemoriju datoteka.

sudo mkdir -p /var/nginx/fastcgi_cache

Oglas


Testirajte Nginx FastCGI Cache

Sada testirajte svoju predmemoriju naredbom curl u nastavku. Imajte na umu da ćete možda morati pokrenuti naredbu nekoliko puta prije nego što se predmemorija pogodi, ovisno o vašim navedenim postavkama.

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

Potražite u svom izlazu (X-FastCGI-Cache: 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 datoteke koje treba zanemariti

Određene značajke web-mjesta uopće se ne smiju spremati u predmemoriju. Na primjer, za WordPress web-mjesta, odjeljke komentara u feedu povratnih informacija/odgovora na web-mjestu, karte web-mjesta, na primjer, treba postaviti tako da se izbjegavaju. To možete učiniti tako da unesete sljedeći kod kako biste izuzeli ove stavke iznad lokacije (~\.php$) crta.

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

Ako želite otklanjanje pogrešaka, možete dodati ispod svakog (postavite $skip_cache 1;) sljedeće da biste omogućili.

set $skip_reason "note of your choice";

Oglas


Komentari i zaključak

Uz postojeću postavku Nginxa i LEMP-a, vodič vam je pokazao kako implementirati direktivu FastCGI Cache na vaš poslužitelj, što može poboljšati performanse smanjenjem broja zahtjeva za vaš PHP-FPM tijekom vršnog vremena. To će zatim ići na smanjenje opterećenja sustava, čemu sve web stranice teže savršenstvu.

FastCGI je koristan za CMS web-mjesta kao što je WordPress koji imaju dodatke koji mogu raditi ruku pod ruku s tehnologijom cachinga, a oni se mogu pronaći u odjeljcima dodataka tih CMS proizvoda.

Ostavite komentar