Nginx vs Apache: care este cel mai bun server web?

Publicat: 2021-12-30

Deși există o mulțime de tipuri diferite de software pentru server, de multe ori îi vei reduce pe concurenți la Nginx vs Apache. Acest lucru se datorează faptului că ambele oferă performanțe de top pentru multe configurații diferite de server și se potrivesc anumitor aplicații mai bine decât altele.

Chiar și așa, veți dori totuși să vă gândiți care dintre acestea are mai mult sens pentru nevoile dvs. Există câteva categorii diferite de analizat, cum ar fi suport pentru sistemul de operare (OS), securitate, documentație și (desigur) performanță.

Pentru această postare, vom compara Nginx vs Apache într-o serie de domenii diferite. La final, vom rezuma constatările noastre și vă vom oferi informațiile de care aveți nevoie pentru a alege opțiunea potrivită.

Vă prezentăm Nginx și Apache

Înainte de a intra în detaliile profunde ale fiecărui tip de server, să vă dăm o scurtă descriere atât pentru Nginx, cât și pentru Apache. Odată ce ajungem la următoarea secțiune, veți afla despre unele dintre cazurile de utilizare ale ambelor și unde le puteți vedea „în sălbăticie”.

#Nginx vs #Apache: Care este serverul web potrivit pentru tine?
Faceți clic pentru a trimite pe Tweet

Nginx

Logo-ul Nginx.

În comparație cu Apache, Nginx ( pronunțat „motor X” ) este un începător relativ în lumea tehnologiei server-side. Cu toate acestea, echipa de dezvoltare și-a asumat sarcina de a extinde limitele sistemelor Apache.

Este o soluție open-source pe care mulți utilizatori o iau în considerare pentru stabilitatea și scalabilitatea sa. Acest lucru se datorează (parțial) arhitecturii sale bazate pe evenimente – dintre care mai multe mai târziu. De fapt, o parte a obiectivului pentru lansarea inițială a Nginx a fost acela de a putea gestiona 10.000 de conexiuni simultan. Acesta este ceva care era necesar încă din 2004, din cauza internetului care se extindea rapid la acea vreme.

În general, administratorilor de sistem și proprietarilor de site-uri le place Nginx pentru că este performant, funcționează excelent cu fișiere statice și îndeplinește funcțiile unui echilibrator de încărcare și a unui „proxy invers”. Toate acestea sunt relevante pentru timpul de funcționare, viteză și securitate.

Apache

Sigla serverului Apache HTTPS.

Apache este oarecum „bătrânul” tehnologiei serverelor web. Este aproape la fel de vechi ca web-ul însuși – din 1995 Apache a fost software-ul din nucleul a mii, dacă nu milioane, de servere.

Multă vreme, Apache a fost o tehnologie dominantă printre „sysadmins”. Există o mulțime de motive pentru aceasta – unele legate de performanță, iar altele de forța obișnuinței. Indiferent, serverele Apache văd o mulțime de utilizare acolo unde configurările contează.

Veți găsi Apache ca software preinstalat pe toate distribuțiile Linux, deci este o soluție de bază pentru acel sistem de operare. Cu toate acestea, deși folosește o arhitectură diferită de Nginx, oferă în continuare putere, scalabilitate și documentație fantastică.

O mulțime de administratori de sistem le place, de asemenea, natura personalizabilă a Apache și modul în care puteți face un server propriu prin încărcarea diferitelor module.

Cazurile de utilizare generale pentru Nginx vs Apache

Este corect să spunem că Apache este un „joc de toate meserii” atunci când vine vorba de deservirea site-urilor web. Cu toate acestea, aceasta este o binecuvântare mixtă. Da, serverele Apache pot face aproape tot ce poate face Nginx, dar este în detrimentul unui cod mai puțin performant. Vârsta este un factor aici.

Deoarece Apache a sosit într-un moment înainte de a avea unele dintre cele mai avansate aplicații pentru servere web, baza de cod nu a putut face ceea ce avea nevoie pentru a servi site-uri web moderne. Deși aceste probleme nu sunt neapărat un motiv de îngrijorare acum , o soluție precum Nginx funcționează cu web-ul modern în minte.

Ca atare, veți descoperi că Apache este fantastic ca server ușor de configurat pentru aplicații precum găzduirea partajată. Integrările sale îl văd, de asemenea, folosit ca software de server de dezvoltare locală, ca parte a stivei Linux, Apache, MySQL și PHP (LAMP).

Siglele pentru toate părțile unei stive LAMP: Linux, Apache, MySQL și PHP.

În schimb, Nginx are o bază de software mai matură, cu o raționalizare mai mare în comparație cu Apache. Este bine acolo unde stabilitatea și securitatea sunt elemente cheie, fundamentale. Veți descoperi că un server Nginx nu este la fel de configurabil ca alte tipuri și asta înseamnă că veți accesa mai puțin miezul său.

În plus, nu este modular în același mod în care este Apache, ceea ce îl face mai puțin potrivit pentru o situație în care trebuie să efectuați personalizarea serverului.

Nginx vs Apache: cât de popular este fiecare tip de server

Multă vreme, software-ul server a fost asemănător unei curse cu un singur cai. Apache a fost o forță dominantă de câțiva ani și încă deține o cotă de piață uriașă. Din acest motiv, veți descoperi că există o mulțime de integrări și suport pentru serverele Apache, împreună cu documentație de top.

Acesta este un motiv suplimentar pentru a alege Apache și contribuie la continuarea utilizării acestuia. Cu toate acestea, Nginx este un software de server cu o cotă de piață proprie. Există o creștere lentă a utilizării Nginx de-a lungul timpului, până la punctul în care acum este cea mai dominantă tehnologie de server web de pe piață, deși nu cu mult.

Privind în viitor, am sugera că Apache va vedea mai puțină utilizare în timp, deoarece Nginx oferă o mulțime de ceea ce au nevoie administratorii de sistem într-un server web. Cu toate acestea, LiteSpeed ​​Web Server și Cloudflare Server sunt la orizont și vin cu o bază de utilizatori în creștere și sprijin puternic. În câțiva ani, această comparație ar putea compara Nginx cu unul dintre acești parveniți mai tineri.

Nginx vs Apache: o defalcare tehnică a caracteristicilor și funcționalității

Următoarele câteva secțiuni vor acoperi o serie de aspecte tehnice ale Nginx vs Apache. Deși nu putem acoperi totul, vom acorda zonelor majore suficient timp. În orice caz, deoarece acestea reprezintă elementele de bază ale ambelor tipuri de servere, veți avea mai mult decât suficient pentru a continua atunci când vine vorba de alegerea software-ului potrivit pentru dvs.

1. Conexiune și gestionarea cererilor

Modul în care un server gestionează conexiunile este esențial de știut, deoarece aceasta este „moneda sa de bază”. Este discutabil, dar când oamenii caută să discute despre meritele relative ale Nginx vs Apache, gestionarea conexiunii joacă un rol important în percepții.

Nginx

Nginx este „asincron” și „condus de evenimente”, ceea ce înseamnă că poate gestiona mai multe solicitări simultan și le poate procesa cât timp există resurse disponibile. Acesta generează „procese de lucru” pentru a gestiona conexiunile de intrare, de la care se așteaptă mii la un moment dat. Aceștia sunt „purtătorii de apă” pentru restul serverului.

De exemplu, fiecare proces de lucru va asculta evenimentele și conexiunile de proces și le va adăuga într-o buclă continuă. De acolo, serverul poate procesa fiecare eveniment și îl poate elimina când se termină. Fluxul unui server Nginx oferă scalabilitate inerentă, iar arhitectura asincronă, fără blocare, servește și la asta.

Apache

În schimb, Apache gestionează evenimentele unul câte unul printr-un număr de module de procesare multiplă (MPM). Un administrator de sistem va alege arhitectura de conexiune cea mai potrivită sarcinii, dintre care există câteva.

Modulul mpm_prefork este unul comun. Acest lucru generează procese copil pentru fiecare eveniment și va procesa doar o conexiune la un moment dat. Dacă numărul de procese este mai mare decât numărul de solicitări, v-ați strădui să faceți diferența dintre Nginx și Apache în ceea ce privește performanța.

Cu toate acestea, acest tip de situație este rară, iar un server Apache va vedea un număr mai mare de solicitări decât procese de multe ori. În plus, acest MPM nu se scalează bine, din cauza utilizării memoriei.

Pentru cei care lucrează cu PHP, mpm_prefork este singura modalitate sigură de a lucra cu modulul interpret mod_php . În ciuda dezavantajelor, acesta va fi MPM-ul pe care un dezvoltator WordPress îl va alege dacă trebuie să îl implementeze pe un server Apache.

Veți vedea, de asemenea, modulele mpm_worker și mpm_event . Acestea efectuează o operație similară și se scalează mai bine datorită modului în care pot genera mai multe procese pe colecție de fire.

Acest lot de MPM-uri arată cât de flexibil poate fi Apache, în ciuda dezavantajelor de performanță în unele cazuri.

Gestionarea cererilor pentru conținut static vs dinamic

Înainte de a trece mai departe, ar trebui să menționăm conținutul static versus conținutul dinamic pentru fiecare software de server. Veți citi că Nginx nu poate procesa conținut dinamic, ceea ce vă poate cauza îngrijorare. De fapt, Nginx nu va procesa acest tip de conținut într-un mod nativ. În schimb, îl va trimite către un procesor extern (cum ar fi un cache), apoi așteptați să revină înainte de a muta conținutul.

Pentru dezvoltare, un administrator de sistem va configura o soluție precum Memcached pentru aceasta. Există aspecte negative în această abordare, și anume în ceea ce privește performanța. Cu toate acestea, beneficiile costurilor generale de performanță pentru fiecare porțiune a lanțului anulează acest lucru. Nginx nu trebuie să-și facă griji cu privire la procesarea acestor solicitări, așa că se poate concentra pe domeniile sale de responsabilitate cu o mai mare eficiență.

Sistemul MPM al Apache îi permite să proceseze atât conținut static, cât și dinamic, fără a fi nevoie de alte module. Pentru conținut dinamic, Apache încorporează un procesor de limbă în fiecare lucrător. Este o abordare simplă care funcționează bine. De asemenea, puteți schimba modulele dacă trebuie să faceți o schimbare.

2. Configurarea serverului

Una dintre diferențele mai evidente dintre Nginx și Apache este modul în care configurați fiecare server. Nginx folosește o abordare centralizată, ceea ce înseamnă că un utilizator nu are nicio modalitate de a configura un server în afara unui fișier principal. Deși pare un lucru negativ, există o mulțime de avantaje:

  • Administratorul serverului este responsabil pentru securitatea globală, care întărește accesul la server în ansamblu.
  • Un server centralizat are performanțe mai mari decât alte tipuri. Acest lucru se datorează faptului că Nginx nu va trebui să gestioneze solicitările pentru a verifica fișierele de configurare în fiecare director.
  • Există un efect secundar aici, deoarece nu vor exista modificări pentru server din mai multe zone, menținând în continuare timpii de solicitare mai mici.

O modalitate prin care un neprofesionist va ști că folosește un server Apache este prezența fișierelor .htaccess . Acestea sunt fișiere de configurare pe care le puteți adăuga aproape oriunde pe serverul dvs. Apache va verifica fiecare element al unei căi pentru un fișier .htaccess atunci când se face o solicitare.

Un fișier .htaccess care arată unele reguli de rescriere - comparație Nginx vs Apache

Acest lucru este fantastic pentru utilizatorii care doresc să-și personalizeze porțiunea de server, dar ar putea reprezenta un dezastru dacă una dintre directive cauzează probleme de performanță sau de securitate. Această abordare descentralizată este unul dintre motivele pentru care veți vedea că Apache este folosit la găzduirea partajată. Este, de asemenea, un motiv pentru care un sistem de management al conținutului (CMS) precum WordPress oferă performanțe bune pe serverele Apache.

3. Solicitați interpretare

O diferență majoră dintre Nginx și Apache care nu va părea evidentă este modul în care interpretează cererile. Pe scurt:

  • Nginx interpretează și mapează cererile folosind un identificator uniform de resurse (URI) pentru fiecare componentă.
  • Apache poate folosi, de asemenea, URI-uri pentru a interpreta cererile, dar este mai obișnuit să vedeți o structură de căi bazată pe fișiere.

Deoarece Apache este un server web în primul rând, va folosi blocuri <Directory> , <Files> sau <Location> pentru a defini resursele. Conceptul cheie aici este că tot ce „vede” Apache este legat de serverul web, deci nu există ambiguitate în calea resursei. Gândiți-vă la un arbore de documente și acesta este modul în care Apache „vizualizează” sistemul de fișiere al serverului.

Un fișier de configurare Apache, care arată protecția sistemului de fișiere pentru anumite directoare - comparație Nginx vs Apache

În schimb, Nginx are o mulțime de cazuri de utilizare, cum ar fi un echilibrator de încărcare, un server proxy și un server web. Din acest motiv, cererile trebuie să vină ca un URI pentru ca Nginx să le proceseze. De exemplu, Nginx folosește blocuri de server și location : primul interpretează gazda solicitată, iar cel de-al doilea se potrivește ulterior cu porțiunile URI. Întreaga cerere devine un URI.

Un fișier de configurare Nginx - comparație Nginx vs Apache

În general, un URI este mai flexibil pentru Nginx, deoarece se poate adapta la orice funcție pe care o îndeplinește. Chiar și așa, sistemul Apache funcționează, în condițiile în care trebuie să îndeplinească doar rolul de server web.

Nginx vs Apache: pe care ar trebui să-l alegeți pentru serverul dvs. în 2022

Răspunsul general la, Ce software server ar trebui să aleg? este simplu: este oricare dintre cele oferite de furnizorul tău de găzduire. În multe cazuri, nu vei avea de ales. Observăm că multe gazde web urmează același model pe care ar trebui să-l potriviți dacă doriți să decideți între Nginx și Apache:

  • Dacă doriți să rulați un server care necesită o configurare constantă sau dacă doriți să oferiți utilizatorilor o opțiune de configurare, Apache se va potrivi.
  • Cu toate acestea, dacă doriți să oferiți performanță super, securitate solidă și doriți să gestionați configurațiile mai degrabă decât utilizatorii dvs., Nginx este calea de urmat.

Când vine vorba de performanță, Apache poate ocupa mai multă memorie datorită arhitecturii sale inerente. Nginx va fi mai bun în situații cu trafic ridicat, mai ales dacă trebuie să gestioneze o mulțime de conținut static.

Prin urmare, dacă te bazezi pe cache pentru a stoca și a difuza conținut, Nginx ar putea fi cea mai bună opțiune. Cu toate acestea, amintiți-vă că Nginx nu poate servi conținut dinamic, așa că veți primi mai mult un impact de performanță în funcție de eficiența proxy-ului pe care îl folosește serverul dvs.

Du-te sus

Concluzie

Există o mulțime de zone ale WordPress (și care rulează un site web) care oferă un număr aproape copleșitor de opțiuni. Aceasta este natura fiarei. Cu toate acestea, nu vă ajută atunci când trebuie să vă faceți site-ul să funcționeze rapid.

#Nginx vs #Apache: Care este serverul web potrivit pentru tine?
Faceți clic pentru a trimite pe Tweet

Alegerea dvs. de tip de server este o decizie crucială și de primă linie asupra căreia veți dori să aveți o grijă deosebită. Nginx vs Apache este o comparație comună, deoarece ambele oferă beneficii în anumite situații.

Părerea noastră este că Nginx poate acoperi cele mai multe baze cu performanțe mai mari, ceea ce îl face opțiunea mai bună pentru majoritatea utilizatorilor WordPress. Acesta este motivul pentru care multe dintre gazdele WordPress populare axate pe performanță s-au mutat către o stivă de servere Nginx, inclusiv Kinsta și Flywheel.

Indiferent, poți folosi în siguranță orice oferă gazda dacă nu ai alegerea, iar majoritatea site-urilor WordPress vor fi perfect cu oricare dintre serverele web.

Unde stai pe gardul dintre Nginx și Apache? Anunțați-ne în secțiunea de comentarii de mai jos!

Ghid gratuit

5 sfaturi esențiale pentru a accelera
Site-ul dvs. WordPress

Reduceți timpul de încărcare chiar și cu 50-80%
doar urmând sfaturi simple.

Descărcați ghidul gratuit