Kako instalirati Varnish Cache 6 za Nginx na CentOS/RHEL 8


Varnish Cache (obično poznat kao Varnish) je open-source, moćan i brz reverse-proxy HTTP akcelerator sa modernom arhitekturom i fleksibilnim konfiguracijski jezik. Biti obrnuti proxy jednostavno znači da je to softver koji možete postaviti ispred svog web servera (koji je izvorni server ili backend) kao što je Nginx, da prima HTTP zahtjeve klijenata i prosljeđuje ih na izvorni server za obradu. I isporučuje odgovor sa izvornog servera klijentima.

Varnish djeluje kao posrednik između Nginxa i klijenta, ali s nekim prednostima u pogledu performansi. Njegova glavna svrha je ubrzati učitavanje vaših aplikacija, radeći kao mehanizam za keširanje. On prima zahtjeve od klijenata i prosljeđuje ih jednom backendu da kešira traženi sadržaj (pohranjuju datoteke i fragmente datoteka u memoriju). Tada će svi budući zahtjevi za potpuno sličan sadržaj biti servirani iz keša.

Ovo čini vaše web aplikacije brže učitavanje i indirektno poboljšava ukupne performanse vašeg web servera jer će Varnish posluživati sadržaj iz memorije umjesto da Nginx obrađuje datoteke s diska za pohranu.

Osim keširanja, Varnish također ima nekoliko drugih slučajeva korištenja uključujući ruter HTTP zahtjeva i balansiranje opterećenja, zaštitni zid web aplikacije i još mnogo toga.

Varnish je konfiguriran korištenjem vrlo proširivog ugrađenog Jezika za konfiguraciju laka (VCL) koji vam omogućava da pišete pravila o tome kako bi dolazni zahtjevi trebali biti obrađeno. Možete ga koristiti za izradu prilagođenih rješenja, pravila i modula.

U ovom članku ćemo proći kroz korake za instalaciju Nginx web servera i Varnish Cache 6 na novi CentOS 8 ili RHEL 8 server. Korisnici RHEL 8 trebaju se pobrinuti da omoguće redhat pretplatu.

Da biste postavili kompletan LEMP stog umjesto da instalirate samo Nginx web server, pogledajte sljedeće vodiče.

  1. Kako instalirati LEMP server na CentOS 8
  2. Kako instalirati LEMP server na RHEL 8

Korak 1: Instalirajte Nginx web server na CentOS/RHEL 8

1. CentOS/RHEL 8 se isporučuje sa najnovijom verzijom Nginx softvera web servera, tako da ćemo ga instalirati iz zadanog spremišta koristeći slijedeći dnf komande.

dnf update
dnf install nginx

2. Nakon što je Nginx instaliran, morate pokrenuti, omogućiti i provjeriti status koristeći sljedeće systemctl komande.

systemctl start nginx
systemctl enable nginx
systemctl status nginx

3. Ako ste malo znatiželjni, možete provjeriti i Nginx TCP socket, koji radi na portu 80 po defaultu, koristeći sljedeću ss komandu.

ss -tpln

4. Ako koristite zaštitni zid na sistemu, obavezno ažurirajte pravila zaštitnog zida kako biste dopustili zahtjeve web serveru.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

Korak 2: Instaliranje Varnish Cache 6 na CentOS/RHEL 8

5. CentOS/RHEL 8 obezbjeđuje Varnish Cache DNF modul prema zadanim postavkama koji sadrži verziju 6.0 LTS (Dugoročna podrška).

Da biste instalirali modul, pokrenite sljedeću naredbu.

dnf module install varnish

6. Kada se instalacija modula završi, možete potvrditi verziju Varnish-a instaliranog na vašem sistemu.

varnishd -V

7. Nakon instaliranja Varnish Cache, glavna izvršna komanda instalirana pod /usr/sbin/varnishd i datoteke za konfiguraciju laka nalaze se u /etc/lak/.

Datoteka /etc/varnish/default.vcl je glavna konfiguracijska datoteka laka napisana pomoću VCL i /etc/varnish/secret je lak tajni fajl.

8. Zatim pokrenite uslugu Varnish, omogućite joj da se automatski pokrene tokom pokretanja sistema i potvrdite da je pokrenuta i radi.

systemctl start varnish
systemctl enable varnish
systemctl status varnish

Korak 3: Konfiguriranje Nginxa za rad s Varnish Cache

9. U ovom odjeljku ćemo pokazati kako konfigurirati Varnish keš da radi ispred Nginxa. Nginx podrazumevano sluša na portu 80, obično je svaki blok servera (ili virtuelni host) konfigurisan da sluša na ovom portu.

Na primjer, pogledajte zadani blok nginx servera konfiguriran u glavnoj konfiguracijskoj datoteci (/etc/nginx/nginx.conf).

vi /etc/nginx/nginx.conf

Potražite odjeljak blok servera kao što je prikazano na sljedećem snimku ekrana.

10. Da pokrenete Varnish ispred Nginxa, trebali biste promijeniti zadani Nginx port sa 80 na 8080 (ili bilo koji drugi port po vašem izboru).

Ovo bi trebalo biti urađeno u svim budućim konfiguracijskim datotekama bloka servera (obično kreiranim pod /etc/nginx/conf.d/) za web lokacije ili web aplikacije koje želite posluživati putem Varnish-a >.

Na primjer, blok servera za naše testno mjesto tecmint.lan je /etc/nginx/conf.d/tecmint.lan.conf i ima sljedeću konfiguraciju.

server {
        listen       8080;
        server_name  www.tecmint.lan;
        root         /var/www/html/tecmint.lan/;
        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

Važno: Ne zaboravite onemogućiti zadani blok servera tako što ćete komentirati njegov konfiguracijski odjeljak u datoteci /etc/nginx/nginx.conf kao što je prikazano na sljedećem snimku ekrana. Ovo vam omogućava da pokrenete druge web stranice/aplikacije na vašem serveru, inače će Nginx uvijek usmjeravati zahtjeve na zadani blok servera.

11. Kada se konfiguracija završi, provjerite ima li grešaka u konfiguracijskoj datoteci i ponovo pokrenite Nginx servis da primijenite nedavne promjene.

nginx -t
systemctl restart nginx

12. Zatim, da primamo HTTP zahtjeve od klijenata, moramo konfigurirati Varnish da radi na portu 80. Za razliku od ranijih verzija Varnish Cache gdje je ova promjena napravljena u datoteci okruženja Varnish (koja je sada zastarjela), u verziji 6.0 i novijoj .

Moramo napraviti potrebnu promjenu u datoteci usluge Varnish. Pokrenite sljedeću naredbu da otvorite odgovarajući servisni fajl za uređivanje.

systemctl edit --full  varnish

Pronađite sljedeći red i promijenite vrijednost prekidača -a, koji specificira adresu slušanja i port. Postavite port na 80 kao što je prikazano na sljedećem snimku ekrana.

Imajte na umu ako ne navedete adresu, varnishd će slušati na svim dostupnim IPv4 i IPv6 interfejsima aktivnim na serveru.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Sačuvajte promene u datoteci i izađite.

13. Zatim morate definirati backend server koji će Varnish posjetiti da preuzme sadržaj. To se radi u Varnish glavnoj konfiguracijskoj datoteci.

vi /etc/varnish/default.vcl 

Potražite odjeljak za zadanu pozadinu konfiguracije i promijenite string “default ” u server1 (ili bilo koje ime po vašem izboru koje predstavlja vaš izvorni server). Zatim postavite port na 8080 (ili Nginx port za slušanje koji ste definirali u bloku vašeg servera).

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}

Za ovaj vodič koristimo Varnish i Nginx na istom serveru. Ako vaš Nginx web server radi na drugom hostu. Na primjer, drugi server sa adresom 10.42.0.247, a zatim postavite parametar .host kao što je prikazano.

backend server1 {
    .host = "10.42.0.247";
    .port = "8080";
}

Sačuvajte datoteku i zatvorite je.

14. Zatim morate ponovo učitati systemd konfiguraciju upravitelja zbog nedavnih promjena u datoteci usluge Varnish, a zatim ponovo pokrenuti uslugu Varnish da biste primijenili promjene na sljedeći način.

systemctl daemon-reload
systemctl restart varnish

15. Sada potvrdite da Nginx i Varnish slušaju konfigurirane TCP utičnice.

ss -tpln

Korak 4: Testiranje podešavanja Nginx Varnish keša

16. Zatim provjerite da li se web stranice poslužuju putem Varnish keša na sljedeći način. Otvorite web pretraživač i navigirajte koristeći IP server ili FDQN kao što je prikazano na sljedećem snimku ekrana.

http://www.tecmin.lan
OR
http://10.42.0.144

17. Alternativno, koristite komandu curl kao što je prikazano. Koristite IP adresu vašeg servera ili FQDN web stranice ili koristite 127.0.0.1 ili localhost ako testirate lokalno.

curl -I http:///www.tecmint.lan

Korisni uslužni programi za administraciju predmemorije Varnish

18. U ovom završnom dijelu, ukratko ćemo opisati neke od korisnih uslužnih programa s kojima se Varnish Cache isporučuje, a koje možete koristiti za kontrolu varnishda >, pristup zapisnicima u memoriji i ukupnoj statistici i još mnogo toga.

varnishadm

varnishadm uslužni program za kontrolu pokrenute Varnish instance. Uspostavlja CLI vezu sa varnishd-om. Na primjer, možete ga koristiti za popis konfiguriranih pozadina kao što je prikazano na sljedećem snimku ekrana (pročitajte man varnishadm za više informacija).

varnishadm
varnish> backend.list

lak

Uslužni program varnishlog omogućava pristup podacima specifičnim za zahtjev. Nudi informacije o specifičnim klijentima i zahtjevima (pročitajte man varnishlog za više informacija).

varnishlog

laksstat

varnishstat također poznat kao varnish statistika, koji vam daje pogled na trenutne performanse Varnish-a pružajući pristup statistici u memoriji kao što su keš pogoci i promašaji, informacije o pohrani , kreirane niti, izbrisani objekti (pročitajte man varnishstat za više informacija).

varnishstat 

lak

varnishtop uslužni program čita dnevnike dijeljene memorije i predstavlja kontinuirano ažuriranu listu unosa dnevnika koji se najčešće pojavljuju (pročitajte man varnishtop za više informacija).

varnishtop 

lakir

Uslužni program varnishhist (istorija laka) analizira dnevnike lakiranja i daje kontinuirano ažurirani histogram koji pokazuje distribuciju zadnjih n zahtjeva po njihovoj obrađi ( pročitajteman lakirhist za više informacija).

varnishhist

To je sve! U ovom vodiču smo pokazali kako instalirati Varnish Cache i pokrenuti ga ispred Nginx HTTP servera da ubrzamo isporuku web sadržaja u CentOS/RHEL 8<.

Sva razmišljanja ili pitanja o ovom vodiču možete podijeliti koristeći obrazac za povratne informacije u nastavku. Za više informacija pročitajte dokumentaciju Varnish Cache.

Glavni nedostatak Varnish Cache je nedostatak izvorne podrške za HTTPS. Da biste omogućili HTTPS na vašoj web stranici/aplikaciji, morate konfigurirati proxy za završetak SSL/TLS da radi zajedno sa Varnish Cache kako biste zaštitili vašu web lokaciju. U našem sljedećem članku ćemo pokazati kako omogućiti HTTPS za Varnish Cache koristeći Hitch na CentOS/RHEL 8.