Du leser denne artikkelen fra et nettsted drevet av en åpen kildekodeserver bare fordi åpen kildekodeservere driver over 80% av nettsteder og applikasjoner. Begrepet webserver kan brukes om hverandre for å referere til maskinvare eller programvare som brukes til å servere innhold til sluttbrukere eller klienter via HTTP.
Webservere har vært under utvikling og stadig forbedring siden tidlig på 90-tallet. Det finnes forskjellige typer webservere, og de kan bygges for spesifikke behov, for visse teknologier, eller som spesielle alternativer for visse selskaper.
Denne artikkelen vil liste opp noen av de pålitelige og populære open source-webserverprosjektene som er tilgjengelige for deg å installere og få applikasjonen eller nettstedet til å kjøre.
Open Source webservere for Linux
En webserver kan referere til hele maskinvare- og programvaresystemet, eller spesifikt til programvaren som godtar og betjener HTTP-forespørsler fra klienter.
Som programvare kontrollerer og administrerer en webserver hvordan vertsfiler serveres til klienter. Det kan være en HTTP-server som forstår URL-er og HTTP- eller HTTP / 2-protokollene.
Som maskinvare er en webserver en datamaskin som er vert for webserverprogramvaren og nettstedskomponentfilene som HTML-sider, CSS-stilark, bilder eller JavaScript-filer.
Når en bruker, som deg selv, trenger en fil eller informasjon som er vert på en webserver, vil du bruke en nettleser for å komme med forespørselen. Forespørselen sendes til den aktuelle webserveren (maskinvare), der HTTP-serveren godtar forespørselen, finner riktig fil og sender den tilbake til klientleseren via HTTP.
En statisk webserver vil sende vertsfiler som de er til nettleseren din.
En dynamisk webserver inneholder en database og en applikasjonsserver som oppdaterer de vertene filene før de sendes til nettleseren din via HTTP.
1: Apache HTTP-webserver
Opprinnelig utgitt i 1995, er det den mest populære webserveren. I henhold til bruksstatistikk for webservere fra w3tech.com, Apache driver rundt 33.9% av webapplikasjoner og nettsteder på nettet. Den er utgitt under Apache License License 2, som krever bevaring av copyright-merknader og ansvarsfraskrivelser, men krever ikke at endrede versjoner distribueres med samme lisens. Den kjører i alle populære operativsystemer som Linux, Unix-lignende, Windows, Mac OS X, FreeBSD, Solaris, Novell Netware, OS / 2, etc.
Apache HTTP er skrevet på C-språk og bruker en modulær arkitektur som kan tilpasses, og den kan laste inn ekstra moduler for å utvide funksjonene. Disse inkluderer mod_proxy, som vil tillate en proxy / gateway på serveren din, mod_proxy_balancer vil aktivere lastbalansering for alle protokoller som støttes. mod_file_cache for hurtigbufring, mod_ftp for FTP-støtte for opplasting og nedlasting, eller mod_ssl for støtte for SSL / TLS-krypteringsprotokoll.
Andre bemerkelsesverdige moduler inkluderer proxy-modulen (mod_proxy), mod_rewrite (URL-omskrivingsmodul), mod_include og mod_ext_filter.
Apache har også en populær komprimeringsmetode som er inkludert i den eksterne utvidelsesmodulen, mod_gzip. Den er bygget for å hjelpe til med å redusere størrelsen på websider som serveres via HTTP. De tilpassede loggfilene (mod_log_config) administrerer loggfiler som kan analyseres via en nettleser. Den har ModSecurity for å administrere inntrengingsdeteksjon og forebygging for webapplikasjoner.
Ønskelige funksjoner
- Lasting av dynamiske moduler og håndtering av statiske filer.
- Støtte for HTTP / 2 (mod_http2), IPv6 og komprimering.
- Egendefinert logging og rotasjon, IP-adressebasert geolokalisering.
- Støtte for øktsporing, CGI-støtte, FTP og XML-støtte.
- Implementerer høy samtidighet ved hjelp av MPM- og FastCGI-modus.
- URL-omskriving, finkornet godkjenning og tilgangskontroll.
- Feiltoleranse og håndtering av failover.
- Den implementerer per katalogkonfigurasjon gjennom .htaccess-filer.
Fra versjon 2.4, Apache støtter HTTP / 2 gjennom mod_http / 2, noe som forbedrer ytelsen. Apache ble ansett som litt tregere enn Nginx (asynkron, hendelsesdrevet webserver), noe som førte til økt adopsjon av Nginx, men brukere har vært vitne til forbedret ytelse siden Apache 2.2.
2: Apache Tomcat Web Server
Apache Tomcat er en populær webserver som er tilgjengelig på markedet. Den er bygget for å være vert for Java-webbaserte løsninger hvis bruk er relativt hyppig og rikelig i store organisasjoner på grunn av høy skalerbarhet, ytelse og antall tilgjengelige verktøy for Java-økosystemet. Apache Tomcat er en modnet webserver som er kreditert til James Duncan Davidson fra Apache-stiftelsen. Tomcat har vært under utvikling for over 20 år siden av Apache software foundation som Apache webserver.
Tomcat er en Java-servlet som leveres med utvidet funksjonalitet for interaksjon med Java-servlets, og den implementerer tekniske spesifikasjoner som JavaServer Pages (JSP) og Java Expression Language (Java EL).
Tomcat er laget av flere komponenter som Coyote, Catalina, Jasper, Cluster, etc. Catalina er servletbeholderen, mens Coyote er koblingskomponenten som støtter HTTP 1.1. som webserveren. Det lar Catalina (Java-servlet eller JSP-container) fungere som en webserver som serverer lokale filer som HTTP-dokumenter. Jasper er Tomcats JSP-motor, og den analyserer JSP-filer for å kompilere dem til Java-kode som servlets. Cluster-komponenten administrerer store applikasjoner gjennom lastbalansering og andre teknikker.
Du kan kjøre Apache Tomcat ved siden av Apache HTTP for å legge til rette for prosjekter med både Java og PHP. Tomcat støtter også AWS (Amazon Web Services), noe som gjør den ideell for skybaserte løsninger. Eclipse IDE støtter Tomcat, noe som gjør det enkelt for utviklere å lage og distribuere applikasjoner.
Ønskelige funksjoner
- Den er lett, veldig stabil og svært fleksibel.
- Den har et ekstra sikkerhetsnivå, TLS virtuell hosting.
- Den støtter lekkasjebeskyttelse og gjenkjenning av webapplikasjoner.
- Støtter HTTP / 2 og OpenSSL.
- Avanserte IO-muligheter og refactored clustering.
Apache Tomcat webserver er et bedre alternativ for Java webbaserte applikasjoner. Apache Tomcat er ofte oppført blant andre åpen kildekode Java-applikasjonsservere som JBoss, Wildfly og Glassfish.
3: Nginx webserver
Nginx lese 'Engine-x' er en åpen kildekode, høy ytelse og robust webserver. Den kan distribueres som en lastbalanser, omvendt proxy, IMAP / POP3 proxy-server og API-gateway. Igor Sysoev utviklet den i 2002 som et svar på C10K-problemet. C10k-problemet er et problem med å optimalisere nettverkskontakter og webservere for å håndtere ti tusen samtidige tilkoblinger og klienter. Nginx har vokst i popularitet og kjører omtrent 33.7% av alle nettsteder.
Nginx er avhengig av en asynkron hendelsesdrevet arkitektur for å håndtere et stort antall samtidige økter. Det har blitt populært blant administratorer på grunn av sin lave ressursutnyttelse, høye samtidigheter og skalerbarhet. Det er ideelt for å være vert for trafikkerte nettsteder, og det kan håndtere opptil 500 000 forespørsler per sekund med lav CPU-utnyttelse.
Nginx kan brukes som en frittstående webserver eller som en statisk innholdsserver foran en annen webserver. Videre kan du distribuere Nginx for å servere dynamisk HTTP-innhold på nettverket ved hjelp av SCGI-håndterere for skript, FastCGI, WSGI-applikasjonsservere eller Phusion Passenger-moduler.
Ønskelige funksjoner
- Støtter TLS / SSL, OCSP stifting, gRPC, IPv6 og HTTP / 2.
- Den kan håndtere over 10.000 samtidige tilkoblinger med lite CPU-minne.
- Den støtter SMTP, POP3 og IMAP proxy.
- Den kan konfigureres som en omvendt proxy for å implementere hurtigbufring.
- Støtter modulære arkitekturfiltre som gzipping, byteområder, store svar, XSLT, SSI, bildetransformasjon.
- Støtter IP-adresse og navnebaserte virtuelle servere.
- WebSockets, keepalive og pipelined tilkoblinger
Nginx har to etablerte versjoner, OSS Nginx og Nginx Plus. Nginx Plus tilbyr tilleggsfunksjoner som aktive helsesjekker, økter vedvarende, DNS-service-discovery integrasjon, Datalog, Dynatrace New Relic plugins, en cache rensing API, AppDynamic, Active-Active HA med konfigurasjonssynkronisering. Nginx Plus API støtter nøkkelverdibutikker.
Nginx ble designet for å konkurrere med Apache-serveren om å servere statiske filer, bruke mindre minne og finne svar på c10k-problemet. Vi kan trygt si at det slår Apache hendene ned i denne kategorien. Derfor har den blitt distribuert av populære nettsteder med høy trafikk som Facebook, LinkedIn og Twitter. Lær mer om prosjektet fra den offisielle Nginx-hjemmesiden.
4: Node.js Webserver
Node.js er et kjøretidsmiljø på serversiden som brukes til å bygge webapplikasjoner i Javascript. Den leveres med en HTTP-modul for å utvide funksjonaliteten som en webserver. Node.js ble opprinnelig skrevet i 2009 av Ryan Dahl og har for øyeblikket 1.2% av alle nettsteder.
Node.js implementerer en hendelsesdrevet arkitektur som er i stand til asynkron I / U. Det optimaliserer gjennomstrømning og skalerbarhet, og du kan effektivt implementere sanntidskommunikasjon i webapplikasjoner. En nøkkelforskjell mellom Node.js og andre webservere er at den er en del av en webutviklingsstabel laget av CSS, HTML og JavaScript-stack.
Noden.js-prosjektet styres av Node.js Foundation og er tilgjengelig under en blanding av lisenser. Finn ut mer fra Node.js-prosjektets nettside.
5: Caddy Webserver
Caddy er en rask og kraftig multiplatform-webserver, omvendt proxy, API-gateway og lastbalanser. Caddy-prosjektet ble designet av Mathew Holt og skrevet på Go-språket. Det er et nytt rammeverk og får sterkt etterfølgelse og oppmerksomhet i open source-rammeverket som et alternativ til Apache Web Server.
Caddy er bygget uten avhengigheter, noe som gjør den bærbar og enkel å installere og bruke på tvers av forskjellige distribusjoner. Caddy støtter funksjoner som IPv6, Markdown, WebSockets, FastCGI, maler osv. Caddy aktiverer HTTPS som standard for nettsteder med kvalifiserte domenenavn og omdirigerer HTTP-forespørsler til HTTPS. Den får sertifikater under oppstart og fortsetter å fornye dem i løpet av serverens levetid.
Interessant, den har en 'on-demand TLS' -funksjon, som tilbyr en alternativ konfigurasjonsmetode som lar Caddy bare skaffe sertifikater etter behov under TLS-håndtrykk. Den er tilgjengelig i alle større distribusjoner som MAC, Windows, Android, Linux, BSD og Solaris.
Ønskelige funksjoner
- HTTPS er aktivert som standard, og HTTP / 2 får også primært fokus.
- Ingen avhengigheter, og Golang-kodebasen avhenger ikke av noen underliggende systembiblioteker.
- Støtter IPv6.
- Serverer FastCGI, Gzip-komprimering og overskrifter.
- Støtter katalogsurfing og servere statiske filer i gjeldende arbeidskatalog som standard.
- Støtter VirtualHost, lastbalansering med helsekontroller.
- Caddy kan bygges inn som et bibliotek i andre programmer.
Caddy er en god kandidat for brukeren som søker enkelhet og er glad for å jobbe med standardkonfigurasjoner. Det er en ideell webserver for å kjøre applikasjoner skrevet i GO. I følge w3tech gir den for øyeblikket 0.1% av alle nettsteder.
6: Formørkelsesbrygge Webserver
Eclipse Jetty er designet og bygget som en HTTP-server, HTTP-klient og javax servletbeholder for å servere statisk og dynamisk innhold som en frittstående eller innebygd forekomst. Jetty webserveren og andre kjernekomponenter vert og vedlikeholdes av Eclipse Foundation.
Jetty er en lett og svært skalerbar webserver og servletmotor. Jetty er en fullstendig asynkronisert webserver som er komponentorientert og lett kan bygges inn i andre applikasjoner. Den støtter webprotokoller som HTTP, HTTP / 2 og WebSocket. Disse teknologiene implementerer en høy volum, lav latens, maksimal ytelsesarkitektur, samtidig som den beholder sin enkelhet og kompatibilitet. Det kan oppnå gode resultater med titusenvis av samtidige HTTP-tilkoblinger og WebSocket-tilkoblinger.
Brygge har et lite fotavtrykk som gjør det mulig for webutviklere å distribuere og konfigurere brygge effektivt i ethvert miljø uten å bekymre seg for uønsket overhead- eller minnebruk. Med et lite minnefotavtrykk kan du kjøre flere serverforekomster på virtuell maskinvare, noe som gjør det til et godt alternativ i skyutplasseringer og infrastruktur.
Ønskelige funksjoner
- Det er asynkront, skalerbart og svært utvidbart.
- Har et lite fotavtrykk.
- Støtter OSGI, JMX, JNDI, JASPI og AJP.
- Støtter HTTP / 2, WebSocket-server, Java ServletAPI med JSP.
Eclipse har funnet adopsjon i mange prosjekter som Apache ActiveMQ, Google App Engine, Alfresco, Apache Geronimo, Apache Maven, Apache Spark, Eclipse og Twitters Streaming API. Finn ut mer her.
7: Lighttpd Webserver
Lighttpd eller Lighty er en gratis og åpen kildekode-webserver bygget for hastighetskritiske applikasjoner. Den er sikker, rask, fleksibel og har et minimalt fotavtrykk på mindre enn 1 MB. Det lille fotavtrykket gjør det veldig økonomisk med serverens ressurser og CPU-utnyttelse. Lighttpd distribueres under BSD-lisensen og er favorisert for sin enkelhet, ytelse og støttemoduler.
Lighttpd er bygget på en asynkron forespørselshåndteringsmodell, som er viktig for håndtering og administrering av et stort volum parallelle tilkoblinger, noe som gjør det til et ideelt alternativ for høyytelsesapplikasjoner. Noen vil kanskje si at det speiler arkitekturen i Nginx. Den støtter FastCGI, CGI og SCGI for å koble nettverksserveren din med andre programmer. Den støtter også applikasjoner skrevet på andre språk som Python, Perl, PHP og Ruby, som er populære utviklingsspråk blant utviklere.
Andre avanserte funksjoner i Lighty inkluderer; Auth, URL-omskriving, støtte for SSL / TLS, virtuell hosting og HTTP-utgangskomprimering gjennom mod_compress-modulen.
Ønskelige funksjoner
- Støtter TLS / SSL med SNI via OpenSSL.
- Den støtter HTTP / 2
- Den implementerer fleksibel virtuell hosting.
- Støtter chroot og autentisering mot LDAP-server.
- Støtter moduler som mode_deflate og mod_compress for HTTP-komprimering.
- Den implementerer en effektiv varslingsmekanisme for hendelser ved hjelp av teknologier som kqueue og epoll.
Lighttpd er en enkelttrådet webserver som enkelt kan håndtere noen hundre forespørsler per sekund, og er et godt alternativ for brukere som står overfor utfordringer i miljøer med lite minne og lite CPU. Lighty kjører naturlig på Linux / Unix-systemer, men du kan også kjøre det på Microsoft Windows-plattformen. Les mer om bruksstatistikk, lisensiering og støtte på Lighttpd-hjemmesiden.
8: OpenLiteSpeed webserver
OpenLiteSpeed er et open source-alternativ til LiteSpeed Enterprise webserverutgave. Den er bygget for enkelhet, sikkerhet, optimalisering og kommer med alle viktige funksjoner i Enterprise-utgaven.
OpenLiteSpeed er designet på en hendelsesdrevet, ressursoptimalisert arkitektur. Den leveres med en intuitiv GUI for WebAdmin for å administrere nettsteder og overvåke forskjellige sett med serverberegninger. OpenLiteSpeed er optimalisert for å utføre skript designet på et bredt spekter av språk som Perl, Python, Ruby og Java. Den støtter IPv6 og SSL / TLS.
Ønskelige funksjoner
- Den er kompatibel med modulen Apache mod_rewrite, noe som gjør det enkelt å migrere eksisterende Apache-filer.
- Den hendelsesdrevne arkitekturen gir høy gjennomstrømning.
- Den har et brukervennlig GUI-administrasjonsgrensesnitt.
- Den implementerer Google PageSpeedInsights-optimaliseringer og intelligent cache-akselerasjon som standard.
- Den kan håndtere tusenvis av samtidige tilkoblinger.
OpenLiteSpeed er allsidig, og du kan konfigurere den som en lastbalanser eller omvendt proxy. OpenLiteSpeed er gratis å laste ned og er tilgjengelig under GPLv3-lisensen. Det er et godt alternativ for WordPress-baserte innholdsnettsteder.
9: H2O Web Server
H2O er en ny generasjon HTTP-server med åpen kildekode. Den har raskere responstider med mindre CPU-bruk sammenlignet med eldre generasjon webservere. H2O er designet og bygget fra grunnen av for å skape fullverdig HTTP / 2-implementeringer.
Brukere av H2O kan dra nytte av nye HTTP / 2-funksjoner som latensoptimalisering, server-push, prioritert innholdsservering og server-push. Disse funksjonene kan dra nytte av moderne nettleserfunksjonalitet.
Ønskelige funksjoner
- Støtter HTTP 1.0/1.1 /, HTTP / 2.
- Støtter TCP Fast Open.
- Støtter WebSockets og TLS.
- Den støtter server push, forhandlingsmetoder: NPN, ALPN, oppgradering, direkte.
H20 er skrevet på C-programmeringsspråket og kan også brukes som et bibliotek. H2O er tilgjengelig under MIT-lisensen. Finn ut mer om H2O-bruksstatistikk.
10: Cherokee Web Server
Cherokee er en lett, rask, fleksibel og effektiv åpen kildekode, plattforms-webserver. Den ble utviklet som et personlig utviklingsprosjekt, men har vokst til en anstendig webserver som kjører på Linux, BSD, Solaris, MAC og Windows.
Cherokee lager listen vår på grunn av sin enkelhet. Den kommer med et vennlig nettbasert grensesnitt, og du trenger ikke å mestre mange kommandolinjekonfigurasjoner for å få den til å fungere og fungere.
Den støtter teknologier som FastCGI-, CGI-, SSI-, SCGI-, PHP-, TLS- og SSL-krypterte tilkoblinger, VirtualHosts, lastbalansering og Apache-kompatible loggfiler.
Cherokee kan håndtere samtidige tilkoblinger med lite minne og forbedrer maskinvarens ytelse. Den har en modulær arkitektur som kan modifiseres og utvides gjennom en administrasjonsveiviser for å utføre bestemte oppgaver, utvide applikasjoner og kjøre rammer.
Ønskelige funksjoner
- Den kan konfigureres som en omvendt HTTP-proxy.
- Serversiden inkluderer (SSI) på gzip og deflate komprimeringer.
- Støtter chroot og RRDtool statistikk.
- Støtter videostreaming, innholdsbufring osv.
Til tross for at den ikke er aktivt utviklet, er den en god webserver for enkle prosjekter. Den støtter PHP, Django, Ruby on Rails, ColdFusion, Alfresco, Symfony, GNU Mailman, .NET med Mono, rTorrent og Zend Engine, som gir deg mange alternativer for å bygge prosjektet ditt.
Lær ved å prøve
Hvis du begynner på webservere, kan du prøve stablene LEMP (Linux, Nginx, MySQL, PHP) eller LAMP (Linux, Apache, MySQL, PHP). Du kan enkelt installere disse stablene ved hjelp av enkle installatører, og er også tilgjengelig i din Linux pakkebehandling. Det vil gi deg en bred praktisk erfaring med hvordan webservere fungerer.
Jeg har tatt med noen populære webservere (Apache, Nginx), nyere (H2O, Node.js) og så på Jetty-webserveren som støttes av Java-teknologier. Listen er på ingen måte omfattende, og med mer forskning kan du oppdage andre webserverteknologier du kan prøve ut eller bruke til prosjektet ditt.