NGINX vs. Apache (Pro / Con-gennemgang, anvendelser og hosting for hver)

TL; DR: Vi vurderer to af de mest populære webservere: NGINX og Apache på seks nøglepunkter for sammenligning (ydelse til statisk vs. dynamisk indhold, OS-support, sikkerhed, fleksibilitet, dokumentation og support). Vi finder ud af, at de to er værdige konkurrenter, men Apaches .htaccess-fil gør den især tiltalende for delte hostingkunder. I mellemtiden hersker NGINX suveræn for dynamisk indholdsstøtte, og delvis på grund af dets mere avancerede funktionstilbud, er det mest populært brugt af VPS og dedikerede hostingbrugere. Endelig vil vi gennemgå vores anbefalinger til vært for dit næste webapp-projekt.


Der var en tid (~ slutningen af ​​90’erne-2011), hvor Apache-webserveren tjente omkring 60 procent – og til tider endnu mere – af verdens websteder. Denne procentdel er siden faldet under 35 og falder stadig med en ganske betydelig sats. I mellemtiden har Microsofts IIS-webserver haft en noget stabil, lidt stigende, andel af markedet og nået 30 procent i dag. Tredjepladsen ejes af en konkurrent kaldet NGINX (udtales “motor-x”), der i øjeblikket betjener ca. 16 procent af alle websteder, og denne sats vokser støt med ca. en procent hvert år.

Jeg vil bemærke, at nogle webundersøgere placerer markedsandelene for Apache og NGINX meget højere i betragtning af IIS som en mindre konkurrent. Virkeligheden findes sandsynligvis et sted i midten, men de overordnede tendenser er tydelige. I betragtning af kun de travleste steder på nettet besidder Apache ca. 46 procent af markedsandelen, men den del falder med cirka fire procent årligt; NGINX har en stærk andenplads med 24 procent af markedsandelen og vokser med cirka tre procent hvert år. NGINX lokker naturligvis verdens største webejendomme med noget!

Resultater af Netcraft-undersøgelser for markedsandele på webserver

NetCrafts sammenligning af webserver på webserver: På tværs af alle sider (til venstre) & På tværs af de mest populære milliarder steder (højre)

I denne artikel foretager vi NGINX / Apache-sammenligninger for følgende interesseområder:

  • Ydeevne
  • OS-support
  • Sikkerhed
  • Fleksibilitet
  • Dokumenter
  • Brugersupport

Lad os først sørge for, at vi alle er fortrolige med de webservere, vi sammenligner … Eller du kan springe til vores resume af Apache og NGINX, som inkluderer vores hostinganbefalinger.

Apache oversigt

Apache er webserverkomponenten i den populære LAMP (Linux, Apache, MySQL, PHP) stabel. Selvom der i dag er mange andre webstackkomponenter (f.eks. NodeJS, rige klienter JS-rammer, forskellige skytjenester osv.), Er LAMP stadig meget populær.

Apache-webserveren har et rigt sæt funktioner, der kan aktiveres ved at installere et af de cirka 60 officielle moduler eller et af de mange andre uofficielle moduler, der også findes.

I årenes løb har Apache udviklet flere metoder til behandling af webanmodninger for at forbedre dens effektivitet (hovedsageligt RAM-brug og latenstid). I en verden, hvor stadig flere samtidige webanmodninger skulle håndteres af websteder, og hvor de serverede sidestørrelser blev meget større, var disse nyere metoder nødvendige.

Metoden til behandling af Apache-anmodning kan konfigureres på en af ​​tre måder. Jeg nedbryder de tre vigtigste Multi-Processing Modules (MPM’er) nedenfor:

  1. procesmodel: Dette er den originale “for-gaffel” -metode; det skaleres ikke godt med mange samtidige forbindelser, da det bruger meget RAM og muligvis endda nægter forbindelser ved høj belastning. Mindre steder vil ikke bemærke dette, men større sider vil sandsynligvis gøre det.
  2. arbejder model: Dette skaber en enkelt kontrolproces, der er ansvarlig for at starte børneprocesser. Hver barneproces opretter derefter et fast antal tråde såvel som en lyttertråd. Lyttertråden lytter til forbindelser og videresender dem til en tråd til behandling, når de ankommer. Selvom denne model skalerer meget bedre end for-gaffelmetoden, kan den stadig løbe ind i skaleringsproblemer for websteder med meget stor trafik på grund af flaskehalsen med en enkelt kontrolproces.
  3. begivenhedsmodel: Dette svarer til arbejdermodellen, men det opretter en lyttertråd, der lytter til forbindelser og overfører dem til en arbejdertråd til behandling. Denne MPM håndterer langkørende forbindelser meget mere effektivt på en enkelt tråd (KeepAlive-håndtering). Siden Apache 2.4 er begivenhedsmodellen blevet betragtet som stabil og er nu også standardindstillingen, hvis operativsystemet kan understøtte det.

Du kan også prøve mulighederne for kompilering og kørsel til forbedring af Apache-ydelsen.

NGINX Oversigt

NGINX blev oprettet som svar på C10K-udfordringen med at håndtere mindst 10.000 samtidige klientforbindelser på en enkelt server. NGINX bruger en asynkron, begivenhedsstyret arkitektur til at håndtere disse enorme mængder forbindelser. Denne arkitektur gør håndtering af høje og svingende belastninger meget mere forudsigelig med hensyn til RAM-brug, CPU-brug og latenstid.

Kort over NGINX Event-Driven Architecture

NGINXs hændelsesdrevne arkitektur hjælper med at forudsige RAM- og CPU-brug samt latenstid for høje / svingende belastninger.

Den største forskel mellem NGINX og Apache, hvad angår hændelsesmodellerne, er, at NGINX ikke opretter ekstra arbejdsprocesser pr. Forbindelse. I de fleste tilfælde kører den anbefalede NGINX-konfiguration en arbejderproces pr. CPU, hvilket maksimerer hardwarens effektivitet.

NGINX har også et rigt sæt funktioner og kan udføre forskellige serverroller:

  • En omvendt proxyserver til HTTP-, HTTPS-, SMTP-, POP3- og IMAP-protokollen
  • En belastningsbalancer og en HTTP-cache
  • En frontend-proxy til Apache og andre webservere, der kombinerer fleksibiliteten i Apache med den gode statiske indholdsydelse af NGINX

NGINX understøtter FastCGI- og SCGI-behandlere til visning af dynamiske indholdsskripts såsom PHP og Python. Den bruger LEMP-stakken: en variation af LAMP ved hjælp af den fonetiske stavemåde for NGINX (Linux, “En-juhn-ex,” MySQL, PHP).

NGINX vs Apache: Performance, support, sikkerhed, & Dokumenter sammenlignet

Lad os nu sammenligne begge webservere i flere felter. Vi finder ud af, at Apache og NGINX er værdige konkurrenter, men afhængigt af din brugssag, kan den ene være bedre egnet til dit projekt end det andet. Bare rolig, jeg opsummerer det pænt i min afsluttende NGINX / Apache-sammenligning.

Ydeevne

Nedenfor kontrasterer vi præstationen af ​​Apache (ved hjælp af begivenheden MPM) med den af ​​NGINX i både statiske og dynamiske indholds-serveringsroller.

Statisk indhold

NGINX er cirka 2,5 gange hurtigere end Apache baseret på resultaterne af en benchmark-test, der kører op til 1.000 samtidige forbindelser. En anden benchmark, der kører med 512 samtidige forbindelser, viste, at NGINX er cirka to gange hurtigere og forbruges lidt mindre hukommelse (4%).

NGINX serverer klart statisk indhold meget hurtigere end Apache. Hvis du har brug for at servere meget statisk indhold på høje samtidige niveauer, kan NGINX være en rigtig hjælp.

Dynamisk indhold

En benchmark fra 2015, hvor man sammenligner dynamisk indhold, der serveres af Apache og NGINX, fandt, at Apache-hændelsen MPM, når den blev parret med PHP-FPM-modulet, kan håndtere omtrent samme samtid som NGINX med PHP. En anden sammenligning af webserverens ydeevne viste lignende resultater. Årsagen til dette er næsten al anmodningens behandlingstid brugt i PHP-runtime-miljøet snarere end kernedelen af ​​webserveren. PHP-runtime-miljøet er temmelig ens mellem begge webservere.

Speedemys benchmark for dynamisk indhold - Apache vs NGINX

Speedemys benchmarking for webserver fandt lignende resultater ved hjælp af både Apache og NGINX til at tjene dynamisk indhold.

Med hensyn til PHP (og sandsynligvis også andre sprog) er den dynamiske sideserverydelse praktisk taget ens med en ordentlig Apache-modulopsætning (PHP-FPM + FastCGI). Hvis du virkelig ønsker at fremskynde dynamiske sider, har du flere muligheder: tilføj et Lakerings- eller Memcached-cachelag, skift til en hurtigere PHP-runtime (f.eks. HHVM), lav belastningsbalancering eller tilføj mere hardware.

Desværre oversætter NGINX’s overlegne statiske sideydelsesydelse ikke til visning af dynamiske sider. Begge webservere scorer omtrent det samme på dette punkt.

Operativsystem support

Apache kører på alle slags Unix-lignende systemer (f.eks. Linux eller BSD) og har fuld support til Microsoft Windows. NGINX kører også på flere moderne Unix-lignende systemer og har en vis support til Windows, men dens Windows-ydelse er ikke så stærk som for andre platforme.

Apache kommer noget stærkere ud her.

Sikkerhed

Begge projekter har en fremragende sikkerheds track record for deres C-baserede kodebase. NGINX-kodebasen er imidlertid markant mindre med flere størrelsesordrer, så det er bestemt et stort plus fra et fremadstormende sikkerhedsperspektiv.

Der er rapporter om sårbarhed tilgængelig for Apache 2.2 og 2.4. NGINX har også en liste over nylige sikkerhedsrådgivere. Apache tilbyder konfigurationstips til DDoS-angrebshåndtering såvel som mod_evasive-modulet til at svare på HTTP DoS, DDoS eller brute force-angreb. Du kan også finde nyttige ressourcer til håndtering af DDoS-trusler på NGINX-bloggen.

Fleksibilitet

Tilpasninger til webserveren kan udføres ved at skrive moduler. Apache har haft dynamisk modulbelastning i længst tid, så alle Apache-moduler understøtter dette.

Dette er dog ikke tilfældet for NGINX. I begyndelsen af ​​2016 fik NGINX support til dynamisk modulbelastning; tidligere krævede NGINX administratoren at kompilere modulerne i NGINX-binæren. De fleste moduler understøtter endnu ikke dynamisk indlæsning, men med tiden vil de sandsynligvis gøre det.

Apache fører helt klart på dette punkt.

Dynamisk modulindlæsning & moduler

Både Apache og NGINX har et stort og voksende sæt specifikke funktionsmoduler.

Apache-moduler:

  • Officielle moduler (findes i afsnittet Moduler i Apache-dokumentationen)
  • Modulliste på Wikipedia

Desværre ser det ikke ud til, at en velholdt liste over alle moduler fra tredjepart eksisterer endnu.

Sammenligning af NGINX og Apache

NGINX og Apache har begge rige og stadigt voksende funktionssæt, men de bedst brugte tilfælde varierer for hver webserver.

NGINX-moduler:

  • Officielle moduler (findes i afsnittet Modulerreference i NGINX-dokumentationen)
  • Tredjepartsmoduler

Det er ikke let at sige, om Apache eller NGINX har en klar fordel her, men det meste af den nødvendige nødvendige modulfunktionalitet (f.eks. Proxy-ing, cache, load-balance, etc.) er tilgængelig for begge webservere. NGINX ser stærkere ud med at fungere som en omvendt proxy for TCP- og e-mail-forbindelser (SMTP, IMAP, POP3). Inden for mediestreamingsmoduler ser den kommercielle NGINX Plus-version også stærkere ud.

Apache .htaccess

NGINX understøtter ikke noget som Apache’s .htaccess-fil.

Ved hjælp af .htaccess-filer kan man tilsidesætte hele systemindstillingerne pr. Katalogbasis; For at opnå optimal ydelse skal disse .htaccess-direktiver dog inkluderes i hovedkonfigurationsfilen (e), når det er muligt. Dette er ikke muligt i tilfælde af delt hostingmiljøer, men det kan tilføje en masse fleksibilitet for delt hosting-brugere.

Dokumentation

Dokumentationen til både Apache og NGINX er fremragende, inklusive NGINX-wiki. NGINX tilbyder også online og lokalt træningssessioner om forskellige NGINX-emner – inklusive eksamenscertificeringer.

Support

Apache-community support understøttes via mailinglister, IRC og Stack Overflow. Kommerciel Apache-support er tilgængelig fra en række tredjepartsfirmaer, såsom OpenLogic, men ingen officiel liste opretholdes af Apache Foundation.

NGINX har support fra lokalsamfundet gennem mailinglister, IRC, Stack Overflow og et forum. Virksomheden bag NGINX tilbyder et kommercielt produkt kaldet NGINX Plus, som har støtte til et sæt ekstra funktioner med hensyn til belastningsbalancering, streaming af medier og overvågning.

Apache vs NGINX i anmeldelse

Begge webservere kan i deres seneste versioner konkurrere med hinanden på de fleste områder. For statisk indhold er NGINX konge, men for dynamisk indhold er ydelsesforskellen ret slank. NGINX lyser med nogle af sine mere avancerede funktioner (mediestrømning, reverse proxyer til ikke-HTTP-protokoller), såvel som dens kommercielle support og træning.

Delt hosting-brugere foretrækker muligvis bekvemmeligheden af ​​Apache .htaccess-filen, og Apache understøtter bedre indlæsning af forskellige dynamiske moduler, en funktion, som NGINX kun for nylig har tilføjet. NGINX bruges hovedsageligt til VPS-hosting, dedikeret hosting eller klyngecontainere.

Ejere med høj trafik på websider, der har brug for at servere meget statisk indhold og / eller mediestreams, foretrækker sandsynligvis NGINX (eller brug en kombination af Apache og NGINX). I de fleste andre tilfælde af brug af websteder fungerer begge webserver fint. For at komme i gang med en af ​​begge webservere skal du bruge en solid Linux-hostingudbyder. Heldigvis sammenlignede vores team de bedste udbydere og kan pege dig i den rigtige retning for Linux-hosting til delte eller virtuelle servere.

Find den bedste delte Linux-hosting
Find den bedste Linux VPS til dig

Nå, der har du det. Hvis du stadig har spørgsmål, inden du vælger NGINX eller Apache til dit næste webprojekt, skal du sørge for at fortælle os det nedenfor!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map