Lecție gratuită

Diferența dintre server web, reverse proxy și load balancer

Un server web răspunde direct la cereri HTTP, fie servind fișiere de pe disc, fie transmițând cererea unui interpretor precum PHP-FPM. Nginx și Apache httpd sunt servere web în acest sens strict, la fel ca LiteSpeed, folosit pe majoritatea găzduirilor cPanel din România. Un reverse proxy se așază în fața unuia sau mai multor servere din spate (backend), primește cererea clientului, o transmite mai departe și returnează răspunsul ca și cum ar fi propriul răspuns. Diferența față de un proxy obișnuit, numit forward proxy, este direcția, un forward proxy ascunde clientul față de destinație, un reverse proxy ascunde destinația față de client.

Un load balancer distribuie cererile între mai multe servere backend identice, cu scopul de a crește capacitatea totală și de a elimina un punct unic de eșec. HAProxy, creat de Willy Tarreau în anul 2000, este un load balancer specializat, fără a servi el însuși fișiere statice. Nginx, apărut în 2004 din munca lui Igor Sysoev pentru a rezolva problema C10k, adică zece mii de conexiuni simultane pe un singur server, poate juca simultan toate cele trei roluri, în funcție de configurație.

Cele trei roluri, comparate

RolCe faceExemplu de unealtă
Server webServește fișiere sau interpretează cod pe același serverNginx cu root și index, Apache httpd
Reverse proxyTransmite cererea unui alt proces sau server și returnează răspunsulNginx cu proxy_pass
Load balancerAlege unul dintre mai multe backend-uri identice pentru fiecare cerereHAProxy, Nginx cu bloc upstream

Un exemplu din găzduirea românească

Pe un VPS cu cPanel și LiteSpeed găzduind un singur site WordPress, LiteSpeed joacă rolul de server web, servind direct fișierele temei și interpretând PHP prin lsphp. Nu există niciun reverse proxy separat. Când același magazin online crește și trece la mai multe servere backend pentru a face față traficului din perioada Black Friday, apare nevoie de un strat suplimentar, un reverse proxy care distribuie cererile, exact rolul pe care îl va prelua Nginx în capitolele următoare ale acestui curs.

Confuzia frecventă, server web versus server de aplicație

Un server web nu execută întotdeauna codul aplicației. Nginx nu interpretează PHP, ci transmite cererea către PHP-FPM printr-un socket sau printr-o adresă TCP, folosind directiva fastcgi_pass. Această separare între procesul care ascultă cererile HTTP și procesul care execută codul aplicației este exact motivul pentru care Nginx poate funcționa și ca reverse proxy pentru orice limbaj de programare, nu doar pentru PHP.

De ce contează distincția pentru restul cursului

Fiecare capitol care urmează pornește de la unul dintre aceste trei roluri. Configurarea Nginx ca server web pur ține de capitolul 2, configurarea sa ca reverse proxy ține de capitolul 3, iar echilibrarea încărcării cu HAProxy ține de capitolele 6, 7 și 8. Rețineți această hartă, deoarece o eroare frecventă la administratorii aflați la început este să caute o directivă de echilibrare a încărcării direct în configurația de bază a unui server web, fără să înțeleagă că este un rol distinct, adăugat separat.

Continuați cu restul cursului

Aceasta a fost o lecție din cele 96 ale cursului. Cumpărați cursul și parcurgeți tot conținutul în cont, cu progres salvat, test final și certificat.

Cumpărați cursul la 110 €