Du läser den här artikeln från en webbplats som drivs av en öppen källkodsserver bara för att öppen källkodswebbservrar driver över 80% av webbplatser och applikationer. Termen webbserver kan användas omväxlande för att hänvisa till hårdvaran eller programvaran som används för att betjäna innehåll till slutanvändare eller klienter via HTTP.
Webbservrar har utvecklats och ständigt förbättrats sedan början av 90-talet. Det finns olika typer av webbservrar, och de kan byggas för specifika behov, för vissa tekniker eller som speciella alternativ för vissa företag.
I den här artikeln listas några av de pålitliga och populära open source-webbserverprojekten som är tillgängliga för dig att installera och få din applikation eller webbplats igång.
Öppna källkodsservrar för Linux
En webbserver kan referera till hela hårdvaru- och mjukvarusystemet eller specifikt till programvaran som accepterar och serverar HTTP-förfrågningar från klienter.
Som programvara kontrollerar och hanterar en webbserver hur värdfiler serveras till klienter. Det kan vara en HTTP-server som förstår webbadresser och HTTP- eller HTTP / 2-protokollet.
Som maskinvara är en webbserver en dator som är värd för webbserverprogramvaran och webbplatskomponentfilerna som HTML-sidor, CSS-formatmallar, bilder eller JavaScript-filer.
När en användare, som du själv, behöver en fil eller information som finns på en webbserver, använder du en webbläsare för att göra en begäran. Förfrågan skickas till relevant webbserver (hårdvara), där HTTP-servern accepterar begäran, hittar rätt fil och skickar den tillbaka till klientens webbläsare via HTTP.
En statisk webbserver skickar värdfiler som de är till din webbläsare.
En dynamisk webbserver innehåller en databas och en applikationsserver som uppdaterar de värdade filerna innan de skickas till din webbläsare via HTTP.
1: Apache HTTP-webbserver
Ursprungligen släpptes 1995 och är den mest populära webbservern. Enligt användningsstatistik för webbservrar från w3tech.com, Apache driver runt 33.9% av webbapplikationer och webbplatser på Internet. Det släpps under Apache-licensversion 2, vilket kräver att copyrightmeddelanden och ansvarsfriskrivningar bevaras, men att modifierade versioner inte behöver distribueras med samma licens. Den körs i alla populära operativsystem som Linux, Unix-liknande, Windows, Mac OS X, FreeBSD, Solaris, Novell Netware, OS / 2, etc.
Apache HTTP är skrivet på C-språk och använder en modulär arkitektur som är mycket anpassningsbar, och den kan ladda extra moduler för att utöka dess funktioner. Dessa inkluderar mod_proxy, vilket möjliggör en proxy / gateway på din server, mod_proxy_balancer möjliggör belastningsbalansering för alla protokoll som stöds. mod_file_cache för cachning, mod_ftp för FTP-stöd för uppladdningar och nedladdningar eller mod_ssl för SSL / TLS-krypteringsprotokollsstöd.
Andra anmärkningsvärda moduler inkluderar proxymodulen (mod_proxy), mod_rewrite (URL-omskrivningsmodul), mod_include och mod_ext_filter.
Apache har också en populär komprimeringsmetod som ingår i den externa tilläggsmodulen mod_gzip. Den har byggts för att hjälpa till att minska storleken på webbsidor som serveras via HTTP. De anpassade loggfilerna (mod_log_config) hanterar loggfiler som kan analyseras via en webbläsare. Den har ModSecurity för att hantera intrångsdetektering och förebyggande för webbapplikationer.
Önskvärda funktioner
- Laddning av dynamiska moduler och hantering av statiska filer.
- Stöd för HTTP / 2 (mod_http2), IPv6 och komprimering.
- Anpassad loggning och rotation, IP-adressbaserad geolokalisering.
- Stöd för sessionsspårning, CGI-stöd, FTP och XML-stöd.
- Implementerar hög samtidighet med MPM- och FastCGI-lägen.
- URL-omskrivning, finkornig autentisering och behörighetskontroll.
- Feltolerans och hantering av failover.
- Det implementerar per-katalogkonfiguration genom .htaccess-filer.
Från och med version 2.4, Apache stöder HTTP / 2 via mod_http / 2, vilket förbättrar prestanda. Apache ansågs vara något långsammare än Nginx (asynkron, händelsestyrd webbserver), vilket ledde till ökad användning av Nginx, men användare har sett förbättrad prestanda sedan Apache 2.2.
2: Apache Tomcat webbserver
Apache Tomcat är en populär webbserver på företagsnivå som finns på marknaden. Den är byggd för att vara värd för webbaserade Java-lösningar vars användning är relativt frekvent och riklig i stora organisationer på grund av hög skalbarhet, prestanda och antalet tillgängliga verktyg för Java-ekosystemet. Apache Tomcat är en mognad webbserver vars skapelse krediteras James Duncan Davidson från Apache-stiftelsen. Tomcat har utvecklats för över 20 år sedan av Apache software foundation som Apache webserver.
Tomcat är en Java-servlet som levereras med utökad funktionalitet för interaktion med Java-servlets, och den implementerar tekniska specifikationer som JavaServer Pages (JSP) och Java Expression Language (Java EL).
Tomcat är tillverkad av flera komponenter som Coyote, Catalina, Jasper, Cluster, etc. Catalina är servletbehållaren, medan Coyote är anslutningskomponenten som stöder HTTP 1.1. som webbservern. Det gör att Catalina (Java-servlet eller JSP-behållare) kan fungera som en webbserver som serverar lokala filer som HTTP-dokument. Jasper är Tomcats JSP-motor, och den analyserar JSP-filer för att kompilera dem till Java-kod som servlets. Cluster-komponenten hanterar stora applikationer genom lastbalansering och andra tekniker.
Du kan köra Apache Tomcat tillsammans med Apache HTTP för att underlätta projekt med både Java och PHP. Tomcat stöder också AWS (Amazon Web Services), vilket gör den idealisk för molnbaserade lösningar. Eclipse IDE stöder Tomcat, vilket gör det enkelt för utvecklare att skapa och distribuera applikationer.
Önskvärda funktioner
- Den är lätt, mycket stabil och mycket flexibel.
- Den har en extra säkerhetsnivå, TLS virtuell hosting.
- Den stöder läckageskydd och upptäckt av webbapplikationer.
- Stöder HTTP / 2 och OpenSSL.
- Avancerade IO-funktioner och refactored kluster.
Apache Tomcat webbserver är ett bättre alternativ för Java webbaserade applikationer. Apache Tomcat listas ofta bland andra Java-applikationsservrar med öppen källkod som JBoss, Wildfly och Glassfish.
3: Nginx webbserver
Nginx läser 'Engine-x' är en öppen källkod, högpresterande och robust webbserver. Den kan distribueras som en belastningsutjämnare, omvänd proxy, IMAP / POP3 proxyserver och API-gateway. Igor Sysoev utvecklade det 2002 som ett svar på C10K-problemet. C10k-problemet är ett problem med att optimera nätverksuttag och webbservrar för att hantera tiotusen samtidiga anslutningar och klienter. Nginx har ökat i popularitet med cirka 33.7% av alla webbplatser.
Nginx förlitar sig på en asynkron händelsestyrd arkitektur för att hantera ett stort antal samtidiga sessioner. Det har blivit populärt bland administratörer på grund av dess låga resursutnyttjande, höga samtidighet och skalbarhet. Det är perfekt för webbhotell med högtrafik och kan hantera upp till 500 000 förfrågningar per sekund med lågt CPU-utnyttjande.
Nginx kan användas som en fristående webbserver eller som en statisk innehållsserver framför en annan webbserver. Dessutom kan du distribuera Nginx för att servera dynamiskt HTTP-innehåll i nätverket med SCGI-hanterare för skript, FastCGI, WSGI-applikationsservrar eller Phusion Passenger-moduler.
Önskvärda funktioner
- Stöder TLS / SSL, OCSP-häftning, gRPC, IPv6 och HTTP / 2.
- Den kan hantera över 10 000 samtidiga anslutningar med lågt CPU-minne.
- Den stöder SMTP-, POP3- och IMAP-proxy.
- Det kan konfigureras som en omvänd proxy för att implementera cachning.
- Stöder modulära arkitekturfilter som gzipping, byteområden, klumpade svar, XSLT, SSI, bildtransformation.
- Stöd IP-adress och namnbaserade virtuella servrar.
- WebSockets, keepalive och pipelined-anslutningar
Nginx har två etablerade versioner, OSS Nginx och Nginx Plus. Nginx Plus erbjuder ytterligare funktioner som aktiva hälsokontroller, sessioners uthållighet, DNS-service-discovery-integration, Datalog, Dynatrace New Relic-plugins, ett cache-rensnings-API, AppDynamic, Active-Active HA med konfigurationssynkronisering. Nginx Plus API stöder viktiga butiker.
Nginx utformades för att konkurrera med Apache-servern för att servera statiska filer, använda mindre minne och hitta svar på c10k-problemet. Vi kan med säkerhet säga att det slår Apache utan tvekan i den här kategorin. Det är därför det har distribuerats av populära högtrafikwebbplatser som Facebook, LinkedIn och Twitter. Läs mer om projektet från den officiella Nginx-hemsidan.
4: Nod.js webbserver
Nod.js är en runtime-miljö på serversidan som används för att bygga webbapplikationer i Javascript. Den levereras med en HTTP-modul för att utöka dess funktionalitet som en webbserver. Nod.js skrevs ursprungligen 2009 av Ryan Dahl och har för närvarande 1.2% av alla webbplatser.
Nod.js implementerar en händelsestyrd arkitektur med asynkron I / O. Det optimerar genomströmning och skalbarhet, och du kan effektivt implementera realtidskommunikation i webbapplikationer. En viktig skillnad mellan noden.js och andra webbservrar är att den är en del av en webbutvecklingsstack gjord av CSS-, HTML- och JavaScript-stack.
Noden.js-projektet styrs av Node.js Foundation och är tillgänglig under en blandning av licenser. Ta reda på mer från noden.js projekts webbplats.
5: Caddy webbserver
Caddy är en snabb och kraftfull multiplatformswebbserver, omvänd proxy, API-gateway och belastningsutjämnare. Caddy-projektet designades av Mathew Holt och skrevs på Go-språket. Det är ett nytt ramverk och får starkt uppmärksamhet i öppen källkodsram som ett alternativ till Apache Web Server.
Caddy är byggd utan beroenden, vilket gör den bärbar och enkel att installera och använda i olika distributioner. Caddy stöder funktioner som IPv6, Markdown, WebSockets, FastCGI, mallar, etc. Caddy aktiverar HTTPS som standard för webbplatser med kvalificerade domännamn och omdirigerar HTTP-förfrågningar till HTTPS. Det får certifikat under start och fortsätter att förnya dem under serverns livstid.
Intressant har den en 'TLS-funktion' på begäran, som erbjuder en alternativ konfigurationsmetod som gör att Caddy endast kan få certifikat efter behov under TLS-handskakningar. Den finns i alla större distributioner som MAC, Windows, Android, Linux, BSD och Solaris.
Önskvärda funktioner
- HTTPS är aktiverat som standard och HTTP / 2 får också primärt fokus.
- Inga beroenden och Golang-kodbasen beror inte på några underliggande systembibliotek.
- Stöder IPv6.
- Serverar FastCGI, Gzip-komprimering och rubriker.
- Stöder katalogsökning och servrar statiska filer i den aktuella arbetskatalogen som standard.
- Stöder VirtualHost, lastbalansering med hälsokontroller.
- Caddy kan inbäddas som ett bibliotek i andra program.
Caddy är en utmärkt kandidat för användaren som söker enkelhet och är nöjd med att arbeta med standardkonfigurationer. Det är en idealisk webbserver för att köra applikationer skrivna i GO. Enligt w3tech har den för närvarande 0.1% av alla webbplatser.
6: Eclipse Jetty Webserver
Eclipse Jetty är utformad och byggd som en HTTP-server, HTTP-klient och javax servlet-behållare för att servera statiskt och dynamiskt innehåll som en fristående eller inbäddad instans. Jetty-webbservern och andra kärnkomponenter hostas och underhålls av Eclipse Foundation.
Jetty är en lätt och mycket skalbar webbserver och servletmotor. Jetty är en helt asynkron webbserver som är komponentinriktad och lätt kan bäddas in i andra applikationer. Den stöder webbprotokoll som HTTP, HTTP / 2 och WebSocket. Dessa tekniker implementerar en arkitektur med hög volym, låg latens och maximal prestanda samtidigt som den behåller sin enkelhet och kompatibilitet. Det kan uppnå utmärkta resultat med tiotusentals samtidiga HTTP-anslutningar och WebSocket-anslutningar.
Bryggan har ett litet fotavtryck som gör det möjligt för webbutvecklare att effektivt distribuera och konfigurera brygga i vilken miljö som helst utan att oroa sig för den oönskade omkostnaden eller minnesanvändningen. Med ett litet minnesavtryck kan du köra fler serverinstanser på virtuell hårdvara, vilket gör det till ett bra alternativ i molndistributioner och infrastruktur.
Önskvärda funktioner
- Den är asynkron, skalbar och mycket utdragbar.
- Har ett litet fotavtryck.
- Stöder OSGI, JMX, JNDI, JASPI och AJP.
- Stöder HTTP / 2, WebSocket-server, Java ServletAPI med JSP.
Eclipse har hittat antagande i många projekt som Apache ActiveMQ, Google App Engine, Alfresco, Apache Geronimo, Apache Maven, Apache Spark, Eclipse och Twitters Streaming API. Läs mer här.
7: Lighttpd webbserver
Lighttpd eller Lighty är en gratis och öppen källkod webbserver byggd för hastighetskritiska applikationer. Den är säker, snabb, flexibel och har ett minimalt fotavtryck på mindre än 1 MB. Dess lilla fotavtryck gör det mycket ekonomiskt med servern resurser och CPU-användning. Lighttpd distribueras under BSD-licensen och gynnas för sin enkelhet, prestanda och supportmoduler.
Lighttpd är byggd på en asynkron modell för begäranhantering, vilket är viktigt för hantering och hantering av en stor mängd parallella anslutningar vilket gör det till ett idealiskt alternativ för högpresterande webbapplikationer. Vissa kan säga att det speglar arkitekturen i Nginx. Den stöder FastCGI, CGI och SCGI för gränssnitt mellan din webbserver och andra program. Det stöder också applikationer skrivna på andra språk som Python, Perl, PHP och Ruby, som är populära utvecklingsspråk bland utvecklare.
Andra avancerade funktioner i Lighty inkluderar; Auth, URL-omskrivning, stöd för SSL / TLS, virtuell hosting och HTTP-utmatningskomprimering via mod_compress-modulen.
Önskvärda funktioner
- Stöder TLS / SSL med SNI via OpenSSL.
- Den stöder HTTP / 2
- Den implementerar flexibel virtuell hosting.
- Stöder chroot och autentisering mot LDAP-servern.
- Stöder moduler som mode_deflate och mod_compress för HTTP-komprimering.
- Den implementerar en effektiv mekanism för händelseanmälan som använder tekniker som kqueue och epoll.
Lighttpd är en enkel trådad webbserver som enkelt kan hantera några hundra förfrågningar per sekund och är ett bra alternativ för användare som står inför utmaningar i miljöer med lågt minne och låg CPU. Lighty körs inbyggt på Linux / Unix-system, men du kan också köra det på Microsoft Windows-plattformen. Läs mer om användningsstatistik, licensiering och support på Lighttpd-hemsidan.
8: OpenLiteSpeed webbserver
OpenLiteSpeed är ett open source-alternativ till LiteSpeed Enterprise-webbserverutgåvan. Den är byggd för enkelhet, säkerhet, optimering och levereras med alla viktiga funktioner i Enterprise-utgåvan.
OpenLiteSpeed är utformad på en händelsestyrd, resursoptimerad arkitektur. Den levereras med ett intuitivt GUI för WebAdmin för att hantera webbplatser och övervaka olika uppsättningar serverstatistik. OpenLiteSpeed är optimerad för att utföra skript utformade på ett brett spektrum av språk som Perl, Python, Ruby och Java. Den stöder IPv6 och SSL / TLS.
Önskvärda funktioner
- Den är kompatibel med modulen Apache mod_rewrite, vilket gör det enkelt att migrera befintliga Apache-filer.
- Den händelsestyrda arkitekturen resulterar i hög genomströmning.
- Den har ett användarvänligt GUI-administratörsgränssnitt.
- Det implementerar Google PageSpeedInsights optimeringar och intelligent cache-acceleration som standard.
- Den kan hantera tusentals samtidiga anslutningar.
OpenLiteSpeed är mångsidig och du kan konfigurera den som en belastningsutjämnare eller omvänd proxy. OpenLiteSpeed är gratis att ladda ner och är tillgängligt under GPLv3-licensen. Det är ett bra alternativ för WordPress-baserade webbplatser.
9: H2O-webbserver
H2O är en ny generation HTTP-server med öppen källkod. Den har snabbare svarstider med mindre CPU-användning jämfört med äldre generationens webbservrar. H2O är designad och byggd från grunden för att skapa kompletta HTTP / 2-implementeringar.
Användare av H2O kan dra nytta av nya HTTP / 2-funktioner som latensoptimering, server-push, prioriterad innehållsservering och server-push. Dessa funktioner kan dra nytta av modern webbläsarfunktionalitet.
Önskvärda funktioner
- Stöder HTTP 1.0/1.1 /, HTTP / 2.
- Stöder TCP Fast Open.
- Stöder WebSockets och TLS.
- Den stöder server push, förhandlingsmetoder: NPN, ALPN, uppgradering, direkt.
H20 är skrivet på C-programmeringsspråket och kan också användas som ett bibliotek. H2O är tillgängligt under MIT-licensen. Ta reda på mer om H2O-användningsstatistik.
10: Cherokee webbserver
Cherokee är en lätt, snabb, flexibel och performant öppen källkod, plattformsservrar. Det utvecklades som ett personligt utvecklingsprojekt men har vuxit till en anständig webbserver som körs på Linux, BSD, Solaris, MAC och Windows.
Cherokee gör vår lista på grund av dess enkelhet. Den levereras med ett vänligt webbaserat gränssnitt, och du behöver inte behärska många kommandoradskonfigurationer för att få den att fungera.
Den stöder tekniker som FastCGI, CGI, SSI, SCGI, PHP, TLS och SSL-krypterade anslutningar, VirtualHosts, lastbalansering och Apache-kompatibla loggfiler.
Cherokee kan hantera samtidiga anslutningar på lågt minne och förbättrar maskinvarans prestanda. Den har en modulär arkitektur som kan modifieras och utökas genom en administrationsguide för att utföra specifika uppgifter, utöka applikationer och köra ramar.
Önskvärda funktioner
- Den kan konfigureras som en omvänd HTTP-proxy.
- Serversidan inkluderar (SSI) på gzip och tömma komprimeringar.
- Stöder chroot- och RRDtool-statistik.
- Stöder videostreaming, innehållscaching osv.
Trots att den inte är aktivt utvecklad är den en bra webbserver för enkla projekt. Den stöder PHP, Django, Ruby on Rails, ColdFusion, Alfresco, Symfony, GNU Mailman, .NET med Mono, rTorrent och Zend Engine, vilket ger dig många alternativ för att bygga ditt projekt.
Lär dig genom att försöka
Om du kommer igång på webbservrar kan du testa LEMP (Linux, Nginx, MySQL, PHP) eller LAMP (Linux, Apache, MySQL, PHP). Du kan enkelt installera dessa staplar med enkla installatörer och finns också i din Linux-pakethanterare. Det ger dig en bred praktisk erfarenhet av hur webbservrar fungerar.
Jag har inkluderat några populära webbservrar (Apache, Nginx), nyare (H2O, Node.js) och tittade på Jetty-webbservern som stöds av Java-teknik. Listan är inte alls omfattande, och med mer forskning kan du upptäcka andra webbserverteknologier att testa eller använda för ditt projekt.