Apache vs. Nginx: Cili server në internet është zgjidhja më e mirë?
Nginx dhe Apache të kombinuara shërbejnë mbi 50% të internetit. Por Apache ka parë një rënie vitet e fundit, në favor të Nginx. A është vërtet Nginx më i mirë dhe a ka ndonjë përfitim nga përdorimi i Apache?
Nginx është më i ri dhe më i shpejtë
Nginx është shumë më i lehtë se Apache. Ky është një problem i rrënjosur në dizajn - nën kapuç, Apache duhet të krijojë një fije të re procesi për çdo lidhje. Dhe ndërsa mund të përpunojë 10 fije me një shpejtësi të krahasueshme me Nginx, kur është i shkallëzuar deri në qindra lidhje të njëkohshme, Nginx merr një epërsi vendimtare.
Nginx funksionon ndryshe dhe mund të përpunojë lidhje të shumta brenda një filli të vetëm procesi. Është projektuar që të funksionojë gjithashtu si një përfaqësues i thjeshtë i kundërt, kështu që në vend që të sjellë shpenzimet e përgjithshme të një serveri të plotë në internet, është krijuar thjesht për të lëvizur bajt të dhënash nga një vend në tjetrin. Nginx mund të jetë dy herë më i shpejtë se Apache kur shërben përmbajtje statike, dhe shumë më pak CPU intensiv kur e bën këtë, gjë që e bën atë të shkëlqyeshëm për funksionimin në sisteme me fuqi të ulët.
Sidoqoftë, kjo shpejtësi ka vërtet rëndësi vetëm kur u shërben përmbajtje statike shumë përdoruesve menjëherë. Kur filloni të shërbeni përmbajtje dinamike, pengesa qëndron diku tjetër, si në motorin tuaj PHP, aplikacionin tuaj të internetit ose bazën e të dhënave tuaja.
Për shkak se Nginx është gjithashtu një përfaqësues i kundërt, mund ta përdorni përpara një serveri tjetër (madje edhe Apache) posaçërisht për të pritur përmbajtje statike. Një shembull i dobishëm janë aplikacionet Node të paraqitjes nga ana e serverit, ku kërkesat HTTP drejt faqeve dinamike duhet të përcillen në një server që funksionon Express, por burimet statike (imazhe, fletë stilesh, etj.) mund të shërbehen nga Nginx. Shpenzimet e përgjithshme kur e bëni këtë është minimale dhe mund të përshpejtojë ndjeshëm përmbajtjen statike.
Apache është më i konfigurueshëm
Apache është më i fokusuar në të qenit një server në internet dhe ka disa veçori të dobishme si skedarët e konfigurimit të bazuar në drejtori dhe hostet virtuale. Kjo e bën shumë të lehtë drejtimin e shumë siteve në të njëjtin server. Për shembull, mund të shtoni një bllok VirtualHost si ky te /etc/httpd/conf/httpd.conf
:
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.firstsite.com
</VirtualHost>
Kjo do të bëjë që Apache të dërgojë të gjitha kërkesat te www.firstsite.com
në një dosje specifike, e cila mund të ketë cilësimet e veta të pavarura nga sajtet e tjera që funksionojnë në server. Kjo mund të shtohet më tej me skedarët .htaccess
, të cilët mund të mbishkruajnë konfigurimin e serverit për një dosje specifike. Megjithatë, ekzekutimi i sajteve me skedarë .htaccess
është më i ngadalshëm sesa përdorimi i konfigurimit global dhe rekomandohet vetëm në rastet kur dëshironi të lejoni përdoruesit e tjerë të modifikojnë cilësimet e serverit për një drejtori pa prekur konfigurimin global (i ndarë hostimi është shembulli kryesor i kësaj).
Nginx gjithashtu mund të shërbejë domene të shumta nga një server i vetëm dhe t'i drejtojë ato në dosjet e tyre, por nuk është aq i konfigurueshëm, veçanërisht me një mungesë funksionaliteti të ngjashëm me .htaccess
. Por, nëse ju duhet vërtet ai lloj funksioni, mund të përdorni Nginx si një përfaqësues të kundërt për të hyrë në përmbajtjen e shërbyer diku tjetër, madje edhe në një shembull tjetër të Nginx ose kontejnerë të shumëfishtë Docker.
Apache gjithashtu ka mbështetje shumë më të mirë të shtojcave, në formën e moduleve që mund të ngarkohen në mënyrë dinamike pa rifilluar serverin. Nginx gjithashtu mbështet modulet, por vetëm ngarkimin e modulit të shtuar së fundmi, kështu që shumë module ende kërkojnë që ju të rregulloni binarin.
Cilin server duhet të zgjidhni?
Pavarësisht nga mangësitë, ata të dy janë serverë të mirë në internet. Ata janë të dy falas dhe me burim të hapur, megjithëse Nginx ka një version me pagesë të quajtur Nginx Plus që shton një balancues të ngarkesës së softuerit në krye të Nginx me burim të hapur. Të dy serverët janë të sigurt, kanë komunitete të mira mbështetëse dhe janë të lehtë për t'u konfiguruar. Ndërsa Nginx fiton në shpejtësi, të dyja janë të krahasueshme në shërbimin e përmbajtjes dinamike.
Nëse nuk jeni të sigurt se cilin të përdorni, shkoni me Nginx. Në përgjithësi, nëse jeni duke ekzekutuar një sistem Unix, Nginx është një zgjedhje e mirë thjesht për shkak të shpejtësisë dhe lehtësisë së përdorimit. Nëse keni nevojë për më shumë konfigurim, veçanërisht nëse jeni duke ekzekutuar shumë uebfaqe jashtë të njëjtit server, Apache mund të funksionojë më mirë.
Një gjë që duhet të theksohet është se nëse jeni duke përdorur PHP, konfigurimi për Nginx është pak më ndryshe. Apache drejton PHP në mënyrë origjinale në të njëjtin proces, duke komunikuar drejtpërdrejt me motorin PHP. Nginx e drejton atë në një proces të veçantë (PHP-FPM
) dhe komunikon me të si një përfaqësues i kundërt. Të dyja metodat janë po aq të shpejta, por konfigurimi juaj do të ndryshojë.
Nginx dhe Apache mbështesin plotësisht çdo sistem Unix, përfshirë FreeBSD. Ndërsa Nginx teknikisht ka një version që funksionon në Windows, nuk është më i miri. Apache mbështetet plotësisht në Windows, dhe si i tillë është serveri i uebit në atë platformë.