Showdown pe partea serverului: Apache vs NGINX
Publicat: 2020-10-01Serverele web se află în centrul internetului. Fără software de server web, cum ar fi Apache și NGINX, web-ul nu ar fi nimic asemănător cu ceea ce vedem astăzi. Cu toate acestea, nu sunt interschimbabile. Pentru a afla care dintre cele două opțiuni - Apache vs NGINX - este cea mai potrivită pentru dvs., trebuie să înțelegeți cum funcționează acestea.
În acest articol, vom vorbi despre ce sunt serverele web și cum funcționează acestea și vom prezenta atât Apache, cât și NGINX. Apoi vom compara Apache vs NGINX în ceea ce privește diferențele cheie și vom analiza argumentele pro și contra.
Să ajungem la asta!
Ce este un server web?
Pe scurt, un server web este un computer dedicat rulării de software de tip server, cum ar fi Apache sau NGINX. Un server web stochează fișierele site-ului și poate procesa cererile primite pentru a le accesa.
Software-ul serverului web este responsabil pentru această ultimă sarcină, care este o responsabilitate importantă. Pentru site-urile web populare, software-ul pe care îl utilizați ar putea avea nevoie pentru a gestiona un număr mare de solicitări într-un interval de timp redus, deci trebuie să fie la înălțimea sarcinii. Atât NGINX, cât și Apache sunt capabile să scaleze și să gestioneze un număr mare de solicitări. Cu toate acestea, modul în care funcționează ambele opțiuni de server este diferit la nivel de bază.
Software-ul pentru server web funcționează alături de alte câteva componente pentru a servi site-uri web și aplicații moderne. De exemplu, pentru a configura WordPress pe un server aveți nevoie de următoarele componente:
- Server web cu suport HTTPS: acesta poate fi Apache, NGINX sau alte câteva opțiuni.
- PHP: WordPress este construit pe limbajul PHP, deci aveți nevoie de acesta pentru a rula sistemul de gestionare a conținutului (CMS).
- Software de baze de date: acesta poate fi MySQL sau MariaDB.
Pentru acest articol, ne vom concentra numai pe software-ul serverului web. Cu toate acestea, este important să înțelegem că software-ul nu funcționează în vid. În unele cazuri, puteți configura chiar și servere web, cum ar fi Apache și NGINX, pentru a lucra împreună . O modalitate prin care site-urile web pot face acest lucru este configurarea NGINX pentru a funcționa ca un proxy invers în timp ce folosește Apache ca software de server principal. Aplicațiile pe care le aveți la dispoziție sunt în mod clar variate și abundente.
O Introducere în Apache

Pentru o lungă perioadă de timp, Apache a fost opțiunea implicită a serverului web pentru majoritatea site-urilor. Software-ul există încă din 1995, când Robert McCool a introdus serverul HTTP Apache. Câțiva ani mai târziu, Apache Software Foundation a preluat întreținerea, iar Apache a devenit software open-source.
Apache a câștigat o cantitate masivă de popularitate, deoarece a venit instalat alături de câteva distribuții majore Linux. Când vine vorba de servere web, prevalența Linux a făcut din Apache alegerea de facto de ani de zile.
Numele Apache este atât de înrădăcinat cu Linux, încât sistemul de operare (OS) folosește comanda httpd pentru procesul său de server (ceva găsit în Apache însuși). Cu toate acestea, Apache nu este singurul nume important când vine vorba de servere web.
O introducere în NGINX

NGINX a fost proiectat de Igor Sysoev pentru a putea gestiona ceea ce este cunoscut sub numele de „problema C10K”. Aceasta se ocupă cu optimizarea unei rețele pentru a putea gestiona până la 10K conexiuni simultane. Cu alte cuvinte, NGINX a fost creat având în vedere scalabilitatea maximă.
Software-ul open-source a fost lansat în 2004 și acum există două tipuri de licențe disponibile pentru acesta. Aveți versiunea open-source și NGINX Plus, care este o soluție de întreprindere care include asistență profesională și alte caracteristici.
La începuturile sale, majoritatea site-urilor web foloseau NGINX pentru a gestiona doar solicitările statice datorită dificultății sale de instalare percepute față de Apache. Cu toate acestea, cota de piață a NGINX a crescut constant de-a lungul anilor.
Potrivit unor sondaje, NGINX a trecut de Apache drept cel mai popular software de web server din lume. Alte numere l-au pus pe Apache:

Sursa imaginii: W3Techs.
Ceea ce este adevărat este că NGINX este mult mai popular decât Apache printre cele mai populare site-uri web de pe web. Acest lucru se datorează faptului că NGINX are un avantaj incontestabil în ceea ce privește scalabilitatea, care este cheia pentru site-urile care obțin o cantitate masivă de trafic.
De asemenea, NGINX poate trage „dublă datorie” ca proxy invers sau echilibru de încărcare, dacă nu doriți să îl utilizați ca server web. Cu alte cuvinte, poate îndeplini mult mai multe roluri decât poate Apache.
Cu toate acestea, acest lucru nu înseamnă că NGINX ar trebui să fie alegerea dvs. implicită dacă vă gândiți să schimbați serverele. De-a lungul următoarelor secțiuni, vom defini ceea ce face ca fiecare software să fie unic.
Apache vs NGINX: 3 diferențe cheie
Înainte de a putea vorbi despre ce soluție de server este cea mai bună opțiune pentru dvs., trebuie să descompunem ceea ce le face diferite. Să începem prin a vorbi despre gestionarea cererilor în ceea ce privește Apache vs NGINX.
1. Gestionarea solicitării
Fiți avertizat - aici lucrurile devin puțin mai tehnice. Apache folosește ceea ce numește module de procesare multiplă (MPM) pentru a gestiona conexiunile. Software-ul vă permite să alegeți între trei tipuri de MPM-uri:
- mpm-prefork : Acest modul creează procese cu un singur fir pentru a gestiona fiecare cerere. La rândul său, fiecare „copil” nu poate gestiona decât o singură conexiune.
- mpm_worker : Acest modul poate lansa procese multi-thread, fiecare thread fiind capabil să gestioneze o conexiune.
- mpm_event : În cea mai mare parte, acest modul funcționează la fel ca mpm_worker , dar este optimizat pentru a menține conexiunile în viață.
Un aspect unic al Apache este că vă permite să alegeți modulul pe care doriți să îl utilizați și să le schimbați după cum aveți nevoie. În mod implicit, Apache folosește modulul mpm-prefork , care funcționează excelent pentru un număr redus de conexiuni simultane. Modulul mpm_worker este mai bun atunci când vine vorba de scalare, dar necesită resurse suplimentare de server.

În schimb, NGINX folosește ceea ce numește o abordare „bazată pe evenimente”. Software-ul utilizează procese multi-thread, fiecare thread fiind capabil să gestioneze mai multe conexiuni.
Mai mult, NGINX se ocupă de cererile primite în mod asincron. Pe scurt, acest lucru înseamnă că NGINX poate gestiona mai multe solicitări cu mai puține resurse de server, făcându-l mai eficient în acest aspect.
2. Configurare server
Apache folosește fișiere .htaccess pentru a seta reguli specifice pentru modul în care gestionează solicitările primite. Aceste fișiere includ totul, de la reguli de redirecționare la limite de memorie și multe altele.
Folosind Apache, puteți configura fișiere individuale .htaccess pentru fiecare director din arborele serverului dvs. Pentru a vă oferi un exemplu, dacă configurați un server partajat, puteți activa fiecare site web găzduit pe acesta pentru a configura propriile fișiere .htaccess .
Dezavantajul acestui nivel ridicat de flexibilitate este că fiecare fișier .htaccess pe care îl întâlniți de-a lungul unei căi de solicitare trebuie interpretat separat. Aceasta înseamnă că solicitările pot dura mai mult timp pentru a fi executate.
NGINX nu vă oferă același nivel de flexibilitate atunci când vine vorba de configurare. În loc de fișiere de configurare la nivel direct, aveți un fișier principal care guvernează întregul lucru.
3. Module
Modulele sunt programe de completare pe care le puteți utiliza alături de software-ul serverului ales pentru a extinde funcționalitatea sa implicită. Având în vedere vârsta și popularitatea lui Apache, nu ar trebui să fie o surpriză faptul că are avantajul față de NGINX atunci când vine vorba de selectarea modulelor.
Apache nu numai că oferă mai multe module, dar tinde să fie mai ușor de găsit documentație și tutoriale pentru modul de utilizare a acestora. Mai mult, Apache vă permite să instalați, să activați și să dezactivați module după bunul plac, oferindu-vă un grad ridicat de flexibilitate.
NGINX nu oferă același avantaj. Pentru a utiliza module, trebuie să le compilați în nucleul NGINX. Mai mult, nu puteți dezactiva modulele odată compilate, ceea ce face mult mai dificilă schimbarea opțiunilor.
Este important să rețineți că NGINX Plus include o funcție de modul dinamic care vă permite să dezactivați și să activați modulele după bunul plac. Cu toate acestea, chiar și cu Plus, trebuie să compilați aceste module cu nucleul NGINX înainte de a le putea folosi.
Deși biblioteca de module și documentația NGINX sunt în creștere într-un ritm constant, totuși nu se pot potrivi cu Apache din punct de vedere al volumului. Având în vedere modul în care NGINX continuă să câștige mai multă cotă de piață, probabil că acest lucru se va schimba în viitorul apropiat.
Pro și contra Apache vs NGINX
Până acum, înțelegeți diferențele de bază dintre Apache și NGINX. Să prezentăm acum o scurtă defalcare a avantajelor și dezavantajelor fiecărui software.
Apache
Pentru început, să vorbim despre principalele avantaje ale utilizării Apache:
- Poate fi mai ușor de configurat și configurat
- Obțineți un control mai detaliat asupra configurației serverului dvs. datorită fișierelor .htaccess
- Selecția modulelor este mai bună și puteți activa și dezactiva modulele după bunul plac
- Puteți decide cum să gestionați solicitările folosind diferite module
Dezavantajul principal al utilizării Apache vs NGINX este că acesta din urmă pur și simplu scară mai bine. Dacă sunteți încă în faza de creștere a site-ului dvs. web, Apache ar trebui să fie mai mult decât suficient pentru a gestiona traficul.
Cu toate acestea, la un moment dat poate fi necesar să luați în considerare actualizarea stivei de server dacă site-ul dvs. are un succes dramatic. Acest lucru ar putea însemna trecerea la NGINX sau utilizarea acestuia ca un proxy invers pentru serverul dvs. web Apache.
NGINX
NGINX are două avantaje clare când vine vorba de Apache - performanță și scalabilitate. Pentru a fi mai specific, NGINX este mai bun atunci când vine vorba de:
- Gestionarea unui număr masiv de solicitări concurente
- Obținerea unei performanțe mai bune cu mai puține resurse hardware
- Servirea mai rapidă a conținutului static
Această ultimă parte este motivul pentru care atât de mulți oameni aleg să folosească NGINX ca soluție proxy inversă. În ciuda tuturor beneficiilor sale legate de performanță, NGINX nu este lipsit de defecte.
Deși având un singur fișier de configurare se traduce prin scăderea timpilor de solicitare, înseamnă și NGINX este mai puțin flexibil decât Apache. Acest lucru se aplică și modulelor, deoarece versiunea open-source a NGINX vă obligă să compilați module pentru a le utiliza - și nu le puteți dezactiva. În practică, aceasta înseamnă configurarea NGINX pentru a funcționa, deoarece aveți nevoie, poate fi mult mai complexă decât utilizarea Apache.
Motivul principal pentru a utiliza NGINX este dacă performanța este preocuparea dvs. principală. La un moment dat, site-urile web populare trebuie să scoată armele mari pentru a face față traficului masiv fără timpii morți, perioade lungi de încărcare și multe altele. De asemenea, deoarece NGINX vă poate permite să obțineți rezultate mai bune de performanță cu mai puține resurse hardware, poate fi o opțiune mai rentabilă.
Concluzie
Comutarea serverelor sau a software-ului pentru server este întotdeauna o decizie importantă. Ca atare, veți dori în mod ideal să utilizați soluția server cu care veți rămâne pe termen lung.
Alegerea între Apache și NGINX nu este atât de clară pe cât s-ar părea. În multe cazuri, decizia nu va depinde de dvs., deoarece gazda dvs. web va decide ce software să utilizeze. La nivel practic, va trebui să vă faceți cercetările și să aflați ce opțiune utilizează o gazdă web înainte de a vă angaja.
Aveți întrebări despre cum să alegeți între Apache și NGINX? Să vorbim despre ele în secțiunea de comentarii de mai jos!
Imagine în miniatură a articolului de la ProStockStudio / shutterstock.com
