Cum funcționează Varnish Cache + NGINX Reverse Proxy

Publicat: 2022-08-09

În acest articol, vom discuta despre proxy inversă Varnish cache NGINX și despre cum îl puteți configura.

Un server proxy cu accent pe memorarea în cache HTTP este Varnish. Este făcut pentru a fi un accelerator HTTP și poate funcționa ca un proxy invers pentru serverul dvs. web Apache sau NGINX. Site-urile web cu mult trafic și proeminență mare au implementat Varnish.

Cuprins

Ce este Varnish Cache?

Pentru o firmă bazată pe web, memoria cache este adesea cea mai importantă piesă de software. Varnish Cache este un motor HTTP puternic, open-source/proxy HTTP invers, care face exact ceea ce sugerează numele său: memorează în cache (sau stochează) o copie a unei pagini web prima dată când un vizitator o vede. Acest lucru poate accelera un site web cu până la 1000 la sută. Varnish face o singură cerere către serverul dvs. pentru a stoca în cache pagina, după care se ocupă de orice solicitări ulterioare pentru aceeași pagină. Acest lucru are ca rezultat livrarea de conținut incredibil de rapidă și o cerere mai mică pentru resursele serverului de backend.

  • Competențele de bază ale lui Varnish sunt viteza și performanța.
  • Economii de infrastructură server
  • Scalabilitate - Varnish permite site-ului dvs. să răspundă cererii, indiferent de volumul de vizitatori sau solicitări.
  • Protecție împotriva întreruperilor: Varnish continuă să difuzeze informații din cache chiar dacă serverul se blochează.
  • Flexibilitate: Limbajul de configurare Varnish (VCL) permite crearea de soluții, reguli și module specializate.
  • Experiență îmbunătățită a utilizatorului

Cum funcționează Varnish Cache?

Înainte ca acestea să ajungă la backend-ul serverului dvs. web, Varnish procesează toate solicitările primite. Cache-ul său gestionează tot traficul web și, implicit, se reîmprospătează la fiecare două minute.

Varnish Cache Nginx Reverse Proxy

Varnish va direcționa cererea către backend-ul serverului web și va stoca în cache rezultatul, așa cum tocmai am văzut în paragraful generic de proxy invers, dacă cererea nu este memorată în cache.

Odată ce cererile au fost stocate în cache, acestea sunt introduse în memorie și pot fi apoi recuperate rapid și trimise clienților. Varnish folosește limbajul VCL pentru a exprima setările, politicile de stocare în cache și alte reguli (Limbajul de configurare Varnish).

Puteți răspunde la fiecare cerere în mod diferit utilizând această limbă și variațiile sale. De exemplu, puteți direcționa anumite solicitări către un anumit backend sau puteți instrui Varnish să întreprindă o acțiune diferită în funcție de caracteristicile cererii primite sau de rezultatele acesteia.

Materialul stocat în cache poate fi în continuare furnizat chiar și atunci când serverul web este indisponibil, datorită unei caracteristici încorporate numită backend polling, care este o altă funcție uimitoare Varnish. Varnish va continua să ofere conținut în cache pentru un interval de timp cunoscut sub numele de timp de grație dacă detectează un timp de nefuncționare. Interogarea backend interogează serverul la o frecvență pe care o puteți seta flexibil.

Ce este Nginx?

NGINX este un software open-source care poate fi utilizat pentru streaming video, cache, proxy invers, servire web și alte funcții. A început inițial ca un server web construit pentru cea mai mare viteză și fiabilitate. NGINX poate funcționa ca server HTTP, server proxy de e-mail (IMAP, POP3 și SMTP), proxy invers și echilibrator de încărcare pentru serverele HTTP, TCP și UDP, pe lângă faptul că servește ca server HTTP.

Ce este proxy invers?

Funcția principală a unui proxy invers este de a proteja serverele web de traficul de intrare. Fiecare cerere de conectare este primită de un proxy invers, care o redirecționează prin mai multe servere înainte de a se conecta la cel care a gestionat cererea.

Fiecare operație de proxy inversă are trei faze principale:

  1. Colectarea cererilor de conexiune: la marginea rețelei, proxy-ul invers acceptă cererile primite.
  2. Strângere de mână TCP în trei căi: O conexiune la proxy invers este creată după o strângere de mână TCP în trei căi, iar prima conexiune este închisă.
  3. Conexiune la serverul de origine: folosind o adresă IP fictivă, proxy-ul invers conectează serverul de origine la cererea clientului.

Utilizatorii nu se pot conecta niciodată direct la un server de origine, deoarece toate conexiunile browserului web la aplicațiile web se fac întotdeauna printr-un proxy invers.

Cum puteți configura cacheul Varnish proxy invers Nginx?

Instalați Nginx pe serverul dvs

În primul rând, trebuie să instalăm Nginx din depozitul Ubuntu folosind comanda apt

 sudo apt update apt install nginx -y

După finalizarea instalării, trebuie să pornim și să activăm Nginx să se lanseze de fiecare dată la pornirea sistemului folosind comanda systemctl

 systemctl start nginx systemctl enable nginx

Configurați Nginx pe portul 88

Vom configura Nginx să utilizeze portul HTTP neconvențional 8080 pentru funcționare. Pentru a face acest lucru, trebuie să modificăm fișierele gazdă virtuală aflate în directorul „site-uri disponibile”.

 nano /etc/nginx/sites-available/default

Schimbați valoarea liniei „ascultați” la 8080. Salvați și ieșiți.

Verificați erorile testând setările Nginx chiar acum. Reporniți serviciul după aceea.

 nginx -t systemctl restart nginx

Verificați încă o dată Nginx folosind netstat și confirmați că funcționează pe portul HTTP neconvențional 8080.

 netstat -plntu

A fost instalat, iar portul 8080 este utilizat în prezent de serverul web Nginx.

Instalați Varnish pe Ubuntu

Trebuie să instalăm varnish folosind comanda apt

 sudo apt install varnish -y

Folosind comenzile systemctl enumerate mai jos, porniți varnish și setați-l să înceapă automat când sistemul pornește.

 systemctl start varnish systemctl enable varnish

În mod implicit, varnish va folosi portul 6082 pentru interfața web de administrare și portul 6081 pentru accesul public. Asigurați-vă că anumite porturi sunt listate utilizând comanda netstat pentru a verifica.

 netstat -plntu

Acceleratorul HTTP Varnish a fost instalat

Configurați Varnish ca proxy invers pentru Nginx

Ca proxy invers pentru serverul web Nginx, va fi folosit Varnish. Serverul web Nginx va funcționa pe portul HTTP 8080, în timp ce Varnish va rula pe portul HTTP 80.

În această fază, vom configura Varnish pentru Nginx, vom identifica serverul backend și vom modifica Varnish astfel încât să folosească portul HTTP 80 ca port implicit.

Editați fișierul „default.vcl” accesând imediat directorul de configurare lac. și asigurați-vă că gazda este 127.0.0.1 și portul este 8080

 nano /etc/varnish/default.vcl

Configurarea backend-ului este finalizată.

Următorul pas este să configurați Varnish să utilizeze portul HTTP 80. Editați fișierul de configurare al vernisului mergând la directorul „varnish” din directorul „/etc/default”.

 nano /etc/default/varnish

Asigurați-vă că portul dvs. implicit este 6081 și că portul HTTP este 80

Fișierul serviciului de lac din directorul „/lib/systemd/system” ar trebui acum editat. Editați fișierul varnish.service mergând în directorul de sistem systemd.

 cd /lib/systemd/system nano varnish.service

Înlocuiți portul HTTP 80 cu portul vernis 6081 pe linia „ExecStart”.

Acum reîncărcați configurația systemd și reporniți Varnish

 systemctl daemon-reload systemctl restart varnish

Verificați lacul folosind comanda netstat

 netstat -plntu

configurarea lacului ca proxy invers pentru Nginx a fost finalizată

Configurați firewall UFW

Firewall-ul implicit care poate fi citit de om pe sistemul de operare Ubuntu se numește „UFW”. Utilizați comanda apt prezentată mai jos pentru a le instala dacă nu aveți deja pachetul.

 sudo apt install ufw

Vom activa paravanul de protecție și vom deschide porturi SSH, HTTP și HTTPS noi.

comenzile ufw enumerate mai jos.

 ufw allow ssh ufw allow http ufw allow https

Acum porniți firewall-ul și faceți-l astfel încât să pornească întotdeauna la momentul pornirii.

 ufw enable

Acum că firewall-ul UFW este activ, atât porturile HTTP, cât și HTTPS sunt accesibile din rețeaua externă.