Apache vs Nginx: Vilken webbserver är det bättre valet?

0
179

Nginx och Apache tillsammans tjänar över 50% av webben. Men Apache har sett en nedgång de senaste åren, till förmån för Nginx. Är Nginx verkligen bättre, och finns det några fördelar med att använda Apache?

Nginx är nyare och snabbare

Nginx är mycket lättare än Apache. Detta är ett problem baserat på design — under huven, Apache måste skapa en ny processtråd för varje anslutning. Och även om den kan bearbeta 10 trådar med en jämförbar hastighet till Nginx, tar Nginx en avgörande ledning när den skalas upp till hundratals samtidiga anslutningar.

Nginx fungerar annorlunda och kan bearbeta flera anslutningar inom en enda processtråd. Det är utformat för att också fungera som en enkel omvänd proxy, så istället för att ta med en fullständig webbserver är den helt enkelt utformad för att flytta byte med data från en plats till en annan. Nginx kan vara över dubbelt så snabbt som Apache när du serverar statiskt innehåll, och mycket mindre CPU -intensiv när du gör det, vilket gör det utmärkt för att köra på lågdrivna system.

Men den här hastigheten spelar egentligen bara roll vid servering statiskt innehåll för många användare samtidigt. När du börjar servera dynamiskt innehåll ligger flaskhalsen någon annanstans, till exempel i din PHP -motor, din webbapp eller din databas.

Eftersom Nginx också är en omvänd proxy kan du använda den framför en annan server (till och med Apache) för att vara värd för statiskt innehåll. Ett användbart exempel är nodprogram på serversidan, där HTTP-förfrågningar till dynamiska sidor måste vidarebefordras till en server som kör Express, men statiska resurser (bilder, formatmallar etc.) kan serveras från Nginx. Kostnaden för detta är minimal och kan påskynda statiskt innehåll avsevärt.

Apache är mer konfigurerbar

Apache är mer fokuserat på att vara en webbserver och har några användbara funktioner som katalogbaserade konfigurationsfiler och virtuella värdar. Detta gör det enkelt att köra flera webbplatser på samma server. Du kan till exempel lägga till ett VirtualHost -block så här till /etc/httpd/conf/httpd.conf:

& lt; VirtualHost 127.0.0.1:80> DocumentRoot/var/www/html ServerName www.firstsite.com & lt;/VirtualHost & gt; Annons

Detta gör att Apache leder alla förfrågningar till www.firstsite.com till en specifik mapp, som kan ha sina egna inställningar oberoende av andra webbplatser som körs på servern. Detta kan förstärkas ytterligare med .htaccess -filer, som kan skriva över serverkonfigurationen för en specifik mapp. Att köra webbplatser med .htaccess -filer är dock långsammare än att använda global konfiguration och rekommenderas endast i de fall där du vill tillåta andra användare att ändra serverinställningarna för en katalog utan att röra vid den globala konfigurationen (delad hosting är huvudexemplet på detta ).

Nginx kan också betjäna flera domäner från en enda server och dirigera dem till sina egna mappar, men det är inte lika konfigurerbart, särskilt med bristande funktionalitet som liknar .htaccess. Men om du verkligen behöver den typen av funktioner kan du använda Nginx som en omvänd proxy för att komma åt innehåll som serveras någon annanstans, till och med köras på en annan instans av Nginx eller flera Docker -behållare.

Apache har också mycket bättre plugin -stöd, i form av moduler som kan laddas dynamiskt utan att starta om servern. Nginx stöder också moduler, men bara nyligen tillagd modulinläsning, så många moduler kräver fortfarande att du patchar binären.

Vilken server ska du välja?

Trots bristerna är de båda anständiga webbservrar. De är både gratis och öppen källkod, även om Nginx har en betald version som heter Nginx Plus som lägger till en mjukvarubalansutjämnare ovanpå Nginx med öppen källkod. Båda servrarna är säkra, har bra supportgemenskaper och är lätta att konfigurera. Medan Nginx vinner i snabbhet är båda jämförbara när det gäller dynamiskt innehåll.

Om du är osäker på vilken du ska använda, gå till Nginx. I allmänhet, om du kör ett Unix -system, är Nginx ett bra val helt enkelt på grund av dess hastighet och användarvänlighet. Om du behöver mer konfiguration, särskilt om du kör många webbplatser från samma server, kan Apache fungera bättre.

Annonsering

En sak att notera är att om du gör användning av PHP, är inställningen för Nginx lite annorlunda. Apache kör nativt PHP inbyggt i samma process och kommunicerar direkt med PHP -motorn. Nginx kör det i en separat process (PHP-FPM) och kommunicerar med det som en omvänd proxy. Båda metoderna är lika snabba, men din konfiguration kommer att variera.

Nginx och Apache stöder båda alla Unix -system, inklusive FreeBSD. Även om Nginx tekniskt sett har en version som körs på Windows, är den inte den bästa. Apache stöds fullt ut på Windows och är som sådan go-to-webbservern på den plattformen.