Hoe werkt een webserver? Lichtgewicht webservers

Als u http://www.site/how-web-server-work/ in de adresbalk van uw browser typt en op Enter drukt, verschijnt deze pagina van onze website op het scherm.

Op het meest basale niveau gebeurde het volgende: uw browser maakte verbinding met de webserver, stuurde een verzoek om de webpagina van de pagina te verkrijgen en ontving deze.

Nu iets meer details:

De URL bestaat uit drie delen:

1. Protocol (http)

2. Servernaam (www.site)

3. Paginaadressen (hoe-webserver-werk)

De browser maakt contact met de domeinnaamserver om de sitenaam www.site te vertalen IP adres, die het gebruikt om verbinding te maken met de servermachine. De browser maakt vervolgens verbinding met de webserver op het opgegeven IP-adres op poort 80 of een ander adres, indien dat de bedoeling is (we bespreken poorten later in dit artikel).

Volgens het HTTP-protocol stuurde de browser een verzoek naar de server, met het verzoek om het bestand http://www.site/how-web-server-work/

Let daar op koekjes kan ook vanuit de browser naar de server worden verzonden.

Als reactie hierop heeft de server gegenereerd dynamische webpagina en stuurde het terug HTML-tekst om deze pagina in uw browser weer te geven. Koekjes kan ook vanaf de server naar de browser worden verzonden in de paginakop. De browser leest de HTML-tags en produceert de webpagina-uitvoer op het scherm.

Internet

Dus wat is het “internet”? Het internet bestaat uit honderden miljoenen computers die met elkaar zijn verbonden computer netwerk . Een netwerk zorgt ervoor dat alle computers met elkaar kunnen communiceren. Een thuiscomputer kan met behulp van verschillende methoden en apparaten met internet worden verbonden, te beginnen met een primitief modem telefoonlijn, uploaden via lokale netwerkverbinding ( LAN) bij internetprovider ( ISP).

Grote internetproviders ondersteunen glasvezellijnen voor een heel land of regio. Over de hele wereld worden backbone-netwerken aangelegd, verbonden via glasvezellijnen, onderzeese kabels of satellietverbindingen. Elke computer op internet is dus verbonden met elke andere computer op internet.

Klanten en servers

Over het algemeen kunnen alle computers op internet in twee categorieën worden verdeeld: servers en clients. Computers die diensten (zoals webservers, FTP-servers, clouddiensten) aan andere machines leveren, zijn dat wel servers. De machines die worden gebruikt om verbinding te maken met deze services zijn − klanten. Wanneer verbonden met Google, om uit te voeren zoekopdracht of een van zijn diensten gebruikt, stelt Google zijn computer ter beschikking (mogelijk een heel cluster). krachtige computers) om aan uw verzoek te voldoen. Dus Google levert de server. Uw machine kan ook diensten leveren aan iemand op internet. De gebruikersmachine is dus meestal een client, maar kan indien nodig ook een server worden.

Een server kan een of meer diensten op internet aanbieden. Op de servercomputer kan bijvoorbeeld software zijn geïnstalleerd waarmee deze als webserver kan fungeren, server-e-mail en FTP-servers. Clientcomputers die zich bij de server aansluiten, sturen hun verzoeken naar speciale software die op een gedeelde servercomputer draait. Als u bijvoorbeeld een webbrowser op uw computer gebruikt, zal deze “praten” met de webserver op de servercomputer. Uw e-mailtoepassing zal "praten" met de e-mailserver, enzovoort.

IP-adressen

Om al deze machines met een netwerk te verbinden, wordt elke computer op internet een uniek adres genoemd IP adres. Een typisch IP-adres ziet er als volgt uit:

De vier nummers in een IP-adres worden gebeld octetten omdat ze waarden tussen 0 en 255 of 2 8 mogelijke waarden kunnen aannemen.

Elke computer op internet heeft zijn eigen unieke IP-adres. De server heeft statisch IP-adres, die zelden verandert. Aan een thuiscomputer wordt vaak een IP-adres toegewezen door de ISP wanneer de machine er verbinding mee maakt. Dit IP-adres is uniek voor deze sessie, maar kan de volgende keer anders zijn. Op deze manier heeft de ISP slechts één IP-adres nodig voor elke router die hij ondersteunt, en niet voor elke client.

Als je voor werkt Windows-machine, kunt u met behulp van de opdracht veel internetinformatie op uw computer bekijken, inclusief uw huidige IP-adres en hostnaam ipconfig. Op een UNIX-machine moet u typen nsopzoeken V opdrachtregel om het IP-adres van het apparaat weer te geven.

Domeinnamen

Omdat de meeste mensen moeite hebben met het onthouden van de reeks cijfers waaruit IP-adressen bestaan, en omdat IP-adressen soms moeten worden gewijzigd, hebben alle servers en sites op internet ook voor mensen leesbare namen, genaamd domeinnamen. Bijvoorbeeld www.. Dit is voor de meesten van ons gemakkelijker te onthouden www.site dan om te onthouden 5.9.205.233

De naam www.site bestaat eigenlijk uit drie delen:

1. Naam Wereldwijd Web (www). In feite kunt u het doen zonder expliciet “www” op te geven, hoewel dit formeel een ander netwerk zal zijn.

2. Domeinnaam (qriosity)

3. In de domeinzone hoogste niveau(ru)

Domeinnamen beheren Domeinnaamregistreerders. Registrars creëren topleveldomeinnamen en zorgen ervoor dat alle namen in de toplevelzone van het domein uniek zijn. De registrar biedt ook contactgegevens voor elke domeinnaam en start de service wie is, waarmee de eigenaar van het domein wordt aangegeven. De hostnaam wordt aangemaakt door de eigenaar van het domein.

Domeinnaamservers

Een stel servers heeft gebeld domeinnaamservers(DNS) zet voor mensen leesbare namen om in IP-adressen. Deze servers bevatten eenvoudige databases met namen en IP-adressen en worden over het internet verspreid. De meeste individuele bedrijven, internetproviders en grote universiteiten ondersteunen kleine DNS. Er zijn ook centrale DNS's die gegevens gebruiken die zijn aangeleverd door domeinnaamregistreerders.

Wanneer u de URL http://www..site invoert en deze doorgeeft aan de domeinnaamserver, retourneert de server het juiste IP-adres voor www.site. Bij het verkrijgen van het juiste IP-adres kunnen een aantal naamservers betrokken zijn.

Laten we dus herhalen wat we hebben gelezen: het internet bestaat uit miljoenen machines, elk met een uniek IP-adres. Veel van deze auto's zijn dat wel servers. Dit betekent dat ze diensten leveren aan andere computers op internet. Veel van deze servers zijn e-mailservers, webservers, FTP-servers en cloudserviceservers.

Poorten

Elke server stelt zijn diensten via internet beschikbaar met behulp van genummerd havens, één voor elke service die beschikbaar is op de server. Er is bijvoorbeeld een servercomputer waarop een webserver en een FTP-server draaien. De webserver is doorgaans beschikbaar op poort 80 en de FTP-server is beschikbaar op poort 21. Clients maken verbinding met de service via een specifiek IP-adres en een specifieke poort.

Elk van de populairste diensten is beschikbaar op een vooraf bekend poortnummer, maar u kunt dit ook toewijzen eigen nummer poort voor elke dienst.

Als de server verbindingen op een poort van de buitenwereld accepteert en als een firewall de poorten niet beschermt, kunt u vanaf elke computer op internet verbinding maken met een vooraf gedefinieerde poort en de dienst gebruiken. Houd er rekening mee dat er niets is dat u dwingt om bijvoorbeeld de webserver op poort 80 te houden. Als u uw server hebt geïnstalleerd en de webserversoftware erop hebt geladen, kunt u de webserver op poort 999 zetten, of welke andere ongebruikte poort dan ook. . Als uw machine bijvoorbeeld bekend staat als xxx.yyy.com, kunnen ze er verbinding mee maken via de URL http://xxx.jjj.com:999 -":999" geeft duidelijk het poortnummer aan waarlangs uw webserver bereikbaar is. Als de poort niet is opgegeven, gaat de browser er gewoon van uit dat de webserver toegankelijk is via de bekende poort 80.

Protocollen

Zodra een client is verbonden met een dienst op een bepaalde poort, krijgt hij toegang tot de dienst via een speciale poort protocol. Protocol is een geheel van afspraken logisch niveau, waardoor programma's gegevens kunnen uitwisselen. Om samen te werken tussen computers op internet wordt gebruik gemaakt van de TCP/IP-protocollen. De webserver maakt gebruik van het HTTP-protocol.

Extra: Beveiliging

Uit deze beschrijving kunt u opmaken dat de webserver een vrij eenvoudig werkje is software. Het heeft de naam nodig van het bestand dat wordt verzonden GET-opdrachten, ontvangt het bestand en verzendt het naar de browser. Zelfs als je alle code voor het afhandelen van poorten in ogenschouw neemt, bestaat een eenvoudig webserverprogramma uit niet meer dan 500 regels code. Volledige webservers zijn complexer, maar in de kern zijn ze ook heel eenvoudig.

De meeste servers stellen een bepaald niveau in beveiliging aan serviceprocessen. De eenvoudigste optie– vraag een login en wachtwoord aan om toegang te krijgen tot de server. Er worden meer geavanceerde servers toegevoegd extra beveiliging, door een gecodeerde verbinding tot stand te brengen tussen de server en de browser, zodat vertrouwelijke informatie(bijvoorbeeld cijfers kredietkaarten) kunnen via internet worden verzonden.

Dit is eigenlijk alles wat nodig is voor een webserver die standaard, statische webpagina's. Statische pagina's– dit zijn pagina's die niet veranderen, tenzij de webmaster ze zelf bewerkt.

Aanvullend: dynamische pagina's

Wat is er gebeurd dynamisch webpagina's? Bijvoorbeeld:

1. In elk gastenboek kunt u een bericht in een HTML-formulier invoeren en worden nieuwe en oude vermeldingen automatisch weergegeven.

2. Met elke zoekmachine kunt u meedoen trefwoorden in het HTML-aanvraagformulier, en vervolgens wordt er dynamisch een pagina gemaakt op basis van het zoeken naar informatie met behulp van deze trefwoorden.

In al deze gevallen doet de webserver meer dan alleen ‘een bestand zoeken’. Het verwerkt informatie en genereert pagina's afhankelijk van de specifieke kenmerken van de verzoeken. In bijna alle gevallen maakt de webserver gebruik van de zogenaamde scripts- programmacode geschreven in PHP, Perl, Java en andere programmeertalen om dit proces te voltooien.

Ook de pagina’s van onze website zijn dynamisch, gemaakt door PHP-hulp gebruik van MySQL-databases.

Een webserver is een server die HTTP-verzoeken van clients, meestal webbrowsers, accepteert en hen voorziet van HTTP-antwoorden, meestal samen met een HTML-pagina, afbeelding, bestand, mediastream of andere gegevens. Webservers vormen de basis van het World Wide Web.

Met een webserver wordt zowel de software bedoeld die de functies van een webserver uitvoert als de computer zelf waarop deze software draait.

De client, die doorgaans een webbrowser is, doet verzoeken aan de webserver om bronnen te verkrijgen die worden geïdentificeerd door URL's. Hulpbronnen zijn HTML-pagina's, afbeeldingen, bestanden, mediastreams of andere gegevens die de klant nodig heeft. Als reactie verzendt de webserver de gevraagde gegevens naar de client. Deze uitwisseling vindt plaats via het HTTP-protocol.

Hoofdactie eindgebruiker op internet betekent dit ‘naar een webpagina gaan’. Op het meest algemene niveau suggereert dit samenwerken paar toepassingen:

Een webbrowser zoals Firefox of Internet Explorer die in voor mensen leesbare vorm de opgevraagde pagina weergeeft waarvan hij ontvangt...

Webserver, meestal gelegen op externe machine, dat reageert op een paginaverzoek met een gegevensstroom in HTML of een vergelijkbaar formaat.

Browsers worden behandeld door gebruikers die ze met de nodige zorg selecteren en analyseren. Servers zijn daarentegen alleen zichtbaar voor het technische personeel van de site. Bovendien draait, hoewel er veel verschillende webservers zijn, volgens recent onderzoek van Netcraft ongeveer 90% van alle sites op slechts twee daarvan: Apache en Internetinformatie Server (IIS). Beide servers zijn goed ontwikkelde producten, met niet alleen een zeer lange lijst met ingebouwde functies, maar ook een bloeiende "secundaire markt" van boeken, add-ons, advies, providers, enz.

Een webserver wordt beoordeeld op basis van een aantal de belangrijkste parameters:

Efficiëntie: hoe snel reageert het op verzoeken?

Schaalbaarheid: Blijft de server betrouwbaar functioneren als veel gebruikers er tegelijkertijd toegang toe hebben?

Beveiliging: Voert de server alleen de handelingen uit die hij zou moeten doen? Welke mogelijkheden biedt het om gebruikers te authenticeren en de informatiestroom te coderen? Maakt het gebruik ervan aangrenzende applicaties of hosts kwetsbaarder?

Gezondheid: Wat zijn de storingsmodi en noodsituaties van de server?

Naleving.

Flexibiliteit: kan de server worden geconfigureerd om een ​​groot aantal verzoeken te accepteren of dynamische pagina's, waarvoor aanzienlijke berekeningen nodig zijn, of complexe authenticatie, of...?

Platformvereisten: op welke platforms kan de server gebruikt worden? Presenteert hij speciale vereisten naar het hardwareplatform?


Beheerbaarheid: Is de server eenvoudig te installeren en te onderhouden? Is het compatibel met organisatorische standaarden voor logboekregistratie, auditing, kostenberekening, enz.?

Bekende webservers:

· Apache is een gratis webserver die het meest wordt gebruikt in UNIX-achtige besturingssystemen;

· IIS van Microsoft, gedistribueerd met server-besturingssysteem Windows-familie

nginx is een gratis webserver,

· lighttpd is een gratis webserver.

Googlen Web Server- een webserver gebaseerd op Apache en aangepast door Google.

· Resin is een gratis webapplicatieserver.

· Cherokee is een gratis webserver, die alleen via een webinterface wordt bestuurd.

· Rootage is een webserver geschreven in Java.

· THTTPD is een eenvoudige, kleine, snelle en veilige webserver.

"Lichte" webservers

Over het algemeen betekent 'lichtgewicht' eenvoudig, gemakkelijk te installeren, goed functionerend, niet veeleisend en stabiel - kleiner en minder complex dan Apache en IIS, die, in een poging om aan hun behoeften te voldoen grote markt zijn nogal omslachtige structuren geworden.

Voldoende lichte servers bieden mogelijkheden die niet beschikbaar zijn voor marktleiders en andere ‘zware’ alternatieven. De hele server past bijvoorbeeld in één bestand. Dit is handig voor de ontwikkelaar; je kunt met nieuwe ideeën experimenteren door ze op een lichtgewicht server uit te voeren, waarvan de installatie enkele seconden duurt. Bovendien werken lichtgewicht servers, vanwege hun niet veeleisende karakter, succesvol op machines die het gewicht van IIS eenvoudigweg niet kunnen dragen.

Kleine, lichtgewicht webservers werken ook goed op industriële computers systemen op afstand, onder zware omstandigheden of bij onvoldoende stroomvoorziening. In deze situaties is het grote voordeel de mogelijkheid om webpagina's te verwerken met een applicatie die niet veel prestaties of schijfruimte vereist; dit betekent dat machines op afstand ingebouwde, via het web toegankelijke beheerconsoles kunnen hebben, zonder de ontwikkelcomplexiteit en overhead van Apache.

Bijna alle lichtgewicht webservers zijn tot op zekere hoogte open source. Als we specifiek webservergedrag vereisen, zijn de hieronder beschreven servers zo klein dat ze gemakkelijk te begrijpen en dus gemakkelijk te verbeteren zijn. Deze webservers zijn een uitstekend bronmateriaal voor projecten waarbij webservers zijn ingebouwd in speciale hardware of in specifieke applicaties die zijn ontworpen om op computers te draaien algemeen doel. Ze worden ook veel gebruikt op reguliere websites:

· YouTube gebruikt lighttpd voor snelle bezorging gearchiveerde inhoud, zoals video;

· cdServe draait op cd's met "Duitse houtbewerkingsmachines en -gereedschappen";

· LiteSpeed ​​​​is te zien op Twitter, www.funnyoride.com, www.airliners.com, WordPress.com, fanfiction.com, SlashGear, www.forumactif.com en andere prominente websites;

· OpenSUSE, RubyOnRails, MarkaBoo en verschillende andere opmerkelijke sites vertrouwen op Mongrel;

· thttpd werkt op ht.com, mtv.com, The Drudge Report, garfield.com, enz.

Light-servers spelen hun rol zelfs in echte rekencentra, inclusief de hierboven genoemde gerenommeerde sites en niet alleen zij. Vooral goed presterende sites segmenteren hun activiteiten om te extraheren maximaal voordeel van caching, proxyservers, enz. Een op Apache gebaseerde site kan bijvoorbeeld een architectuur hebben waarin langzaam veranderende afbeeldingen worden geleverd via een 'minimalistische' webserver vanuit een speciaal bestandssysteem. Wat de eindgebruiker daadwerkelijk ziet, is het resultaat van de opdracht Apache werkt en één of meer extra webservers, die elk een rol spelen waarin zij uitblinken. Dit ontwerp kan zeer snelle resultaten opleveren minimale kosten voor berekeningen.

Hoewel ze veel gemeen hebben, zijn er binnen deze categorie ook verschillen. De meeste lichtgewicht webservers zijn geschreven in C, maar er zijn een aantal succesvolle implementaties in andere talen, waaronder Erlang, Java, Lisp, Lua, Perl, Python en Tcl.

Alle lichtgewicht webservers zijn kleiner en eenvoudiger te configureren dan Apache. Sommige zijn sneller dan Apache, andere zijn veel sneller; in andere gevallen ligt de nadruk op veiligheid en ononderbroken werking grote downloads, uitbreidbaarheid of geheugenbesparing. Je kunt ze in ieder geval volledig begrijpen, wat voor Apache niet meer mogelijk is.

Zeer kleine webservers zijn onder meer:

· Cheetah-server, met minder dan duizend regels C.

· StofMote, een zeer kleine webserver geïmplementeerd in een enkele Tcl-broncode van ongeveer 3000 bytes groot.

· leuk duurt minder dan 20K, afhankelijk van platform en configuratie. Ondanks zijn kleine formaat ondersteunt het virtuele hosting, CGI en keep-alive.

· ihttpd, met minder dan 800 regels C, kan pagina's weergeven, inclusief CGI, met behulp van inetd.

· Mattows ondersteunt CGI in slechts 600 regels C.

· Krokant, ondanks zijn kleine formaat - ongeveer 30 KB - ondersteunt het een opmerkelijk aantal scripttalen, waaronder een gespecialiseerde stapelgebaseerde taal genaamd Sy.

Het kleine formaat staat serieus gebruik van deze servers niet in de weg; fnord bedient bijvoorbeeld duizenden gelijktijdige verbindingen.

· cgttpd is een minimale webserver die kan worden beschouwd als een experiment in het gebruik van de asynchrone functies die beschikbaar zijn in de 2.6-serie Linux-kernels.

· donkerhttpd– snelle single-threaded HTTP/1.1-server.

· Gatling Speciaal ontworpen voor hoge prestaties. Ondersteunt FTP, IPv6, gedeelde hosting, CGI, enz.

· Kernux is een Linux-kernelmodule die de HTTP-daemon uitvoert.

· lichtpd– de vijfde populairste webserver ter wereld. Het is geoptimaliseerd voor een groot aantal gelijktijdige verbindingen: Een typisch scenario is om lighttpd te gebruiken als een server die de hoofdserver ontlast om statische inhoud aan te bieden...

· LiteSpeed-webserver is een commerciële lichtgewicht webserver met een speciale focus op prestaties en beveiliging. LiteSpeedTechnologies Inc. claimt een snelheid tot zes keer voor statische inhoud en iets bescheidener prestaties voor geïnterpreteerde pagina's.

· Miniatuur JWS, ook bekend als tjws, is een Java-webserver die servlets, JSP's en duizenden gelijktijdige verbindingen afhandelt en 77 kilobytes in beslag neemt. De auteur typeert het als “10% sneller dan Apache 2.x.”

· Framboesia– een krachtige HTTP/1.1-server geschreven in Erlang.

Veel webservers zijn geïmplementeerd als klassen of bibliotheken die zijn ontworpen om in te worden ingebed grote toepassingen. Onder hen zijn de meest interessante:

· EHS– "embedded HTTP server", een C++-klasse die is ontworpen voor insluiting in grote C++-toepassingen; En

· Ingebouwde TCL-webserver, de eenvoudigste webserver die SSL en basisauthenticatie ondersteunt en fantastisch snel is - volgens de metingen van de auteur niet minder snel dan lighttpd en AOLserver. Bevat minder dan honderd Tcl-regels.

Op Python-taal Er zijn verschillende webservers geïmplementeerd die ongebruikelijke niches vullen, waaronder:

· cdServer is een kleine, eenvoudige Python HTTP-server "ontworpen om (statische) inhoud vanaf een cd-rom weer te geven." Heeft beperkte mogelijkheden voor het aanbieden van dynamische inhoud. We hebben verschillende projecten waarbij het gaat om het leveren van niet-bederfelijke "live-CD's" en tools zoals cdServer zijn daarbij van cruciaal belang.

· Edna is een ingenieuze Python MP3-server gebaseerd op HTTP.

Er zijn nog andere interessante lichtgewicht webservers geïmplementeerd in Perl en andere, minder bekende talen:

· Camlserv is een complete webserver geschreven in ocaml en gericht op "zeer interactieve webpagina's". Past in enkele duizenden ocaml-lijnen, waarvan de meeste bestemd zijn voor speciale kenmerken werken met MySQL en HTML.

· dhttpd logt hits in hetzelfde formaat als Apache. Heeft een ingebouwde Perl-interpreter voor CGI-ondersteuning, virtuele hosting, IPv6, bandbreedtebeheer en beveiligingsmogelijkheden.

· DNHTPD geschreven in Perl voor UNIX. Het ondersteunt virtuele hosts, SSL-verbindingen, CGI en meer.

· Gelei– geschreven in Perl Perl-server Objectserver gebaseerd op HTTP.

· lns.http– algemene webomgeving gebaseerd op LISP HTTP/1.1.

· Bastaard– bibliotheek en server voor HTTP, geschreven in Ruby.

· Nanoweb– snelle, stabiele webserver geschreven in PHP. Heeft een uitgebreide lijst met functies, waaronder volledige HTTP/1.1-compliance, oproepbeheer, authenticatie, virtuele hosting, SSL-compatibiliteit, enz.

· Naridesj– Webserver geschreven in Perl.

· OpenAngel– geschreven in Perl. Veiligheid.

· Xavante– HTTP/1.1-webserver geschreven in Lua.

· XSP geschreven in C# en fungeert als ASP.NET-host.

De wereld van webservers bestaat niet alleen uit Apache en IIS, er zijn er nog veel meer. Ruime keuze tot uw beschikking alternatieve oplossingen– klein genoeg om volledig te worden begrepen, maar toch snel genoeg voor serieuze toepassingen.

Na verloop van tijd zal elke webontwikkelaar ( blogger, webdesigner of webprogrammeur) heeft een speciale testlocatie nodig waar het zonder mogelijk is bijzondere problemen studie website ontwikkeling of een ander webproject testen. Sommige beginners gebruiken de middelen van hun betaalde hosting en plaatsen daar minstens twee websites. Eén werknemer ( eenvoudig), en de andere ( aanvullend) om uit te proberen. Testlocatie blootgelegd diverse testen (installatie en testen van vele plug-ins, thema's, scripts enzovoort).

Als gevolg hiervan lijdt de hoofdproductiesite met deze lay-out enorm, omdat de meeste hostingbronnen worden verbruikt door het testproject. Er is echter een andere manier die het mogelijk maakt zonder verlies ( zowel in monetair als in termen van middelen) voer het testen van uw sites uit en we zullen deze methode nu overwegen.

Waarom niet?

U weet waarschijnlijk al dat u, om uw website op internet te zetten, een domeinnaam moet registreren, hosting moet kopen, dat wil zeggen schijfruimte op een computer met hoge snelheidsverbinding, waar ze aan kunnen werken PHP-scripts. Om sites volledig te laten functioneren, moeten PHP en MySQL geïnstalleerd zijn. Dit alles is niet beschikbaar op een gewone computer. Hoe kunnen ze worden gelanceerd HTML-bestanden en PHP op uw computer?

Een normaal bestand kan worden geopend met Notepad++ of zelfs met Notepad. Schrijf er iets in, sla het op en open het vervolgens zonder problemen dit bestand in uw browser en kijk hoe dit bestand eruit zou zien op een hostingsite op internet. Dat wil zeggen, we zien al een werkende HTML-pagina. Daarin kunnen we bepaalde ontwerpen maken, inhoud geven en het project monitoren zonder internetverbinding. Eigenlijk hebben we alles al. Als we willen rennen PHP-bestand Als u een browser gebruikt, zal niets voor ons werken, aangezien PHP-scripts in het Windows-besturingssysteem niet zullen werken zonder aanvullende software.

Dit alles is niet beschikbaar op een gewone computer en er is dus geen mogelijkheid om met uw webprojecten te werken. Daarom beginnen sommige beginners geld uit te geven aan extra middelen van hun betaalde hosting. Maar wat te doen in dit geval? Het antwoord is simpel: ze bestaan speciale programma's, waarmee u uw eigen dedicated server rechtstreeks op uw computer kunt installeren.

Wat is een server?

Wat is er gebeurd server en hoe is het anders lokale server van wat zich op het netwerk bevindt. In ons geval betekent een server niet een computer, maar een speciale set programma's die zorgen voor een optimale werking van de site. Om de site te laten werken, moeten we deze op een speciaal aangewezen locatie op de server installeren (). Dat wil zeggen dat we sitebestanden downloaden naar een externe computer. Zonder speciale serverprogramma's zijn onze geüploade bestanden echter niet zichtbaar op het netwerk. Nu zullen we voor dergelijke doeleinden creëren eigen server op uw thuiscomputer.

Hiervoor hebben we speciale programma's nodig. Maar welke zijn beter geschikt en welke moeilijkheden kunnen ze veroorzaken tijdens verder werk? Ter informatie vermeld ik hieronder de beste webservers op populariteit over de hele wereld. Dit betekent echter niet dat ze onmiddellijk geïnstalleerd moeten worden. Ik zal later uitleggen waarom!

Lijst met de beste webservers

Er zijn momenteel verschillende oplossingen op de markt verschillende fabrikanten:

  • (website - apache.org) is de meest voorkomende en populaire gratis server online. Het is betrouwbaarder en flexibeler. De server vergt geen processorbronnen en kan veel sites bedienen. De applicatie is beschikbaar voor een breed scala aan besturingssystemen, waaronder Unix, Linux, Solaris, Mac OS X, Microsoft Windows en anderen. Voor nu gebruik van Apache bedraagt ​​71%. Echter, dit complex programma, wat niet elke beginner aankan.

  • (website - www.iis.net) is een andere betrouwbare server van Microsoft. Het nestelde zich stevig op de tweede plaats met 14% van het online gebruik. Na installatie van het programma worden slechts twee programmeertalen ondersteund ( VBScript en JScript). U kunt echter wel openen extra functies, hiervoor instellen noodzakelijke uitbreidingen. Met de installatie van dergelijke modules wordt de functionaliteit van deze server aanzienlijk vergroot.

  • NGINX (website - nginx.org/ru/) is de populairste webserver in Russisch internet. Vergeleken met de eerste twee is het de eenvoudigste en heeft het geen onnodige functies. Het wordt ook geprezen om zijn betrouwbaarheid en hoge snelheid werk. De ontwikkelaar van dit product is onze landgenoot Igor Sysoev. In 2004 bracht hij de eerste versie van nginx uit. Nu dit software sluit de top drie van populairste webservers ter wereld. Het gebruik ervan is ongeveer 6,5%.

  • (website - litespeedtech.com) - deze webserver heeft geen uitgebreide mogelijkheden, maar wel zeer hoge snelheid werk. Het is 9 keer sneller dan de populaire Apache. Er wordt veel aandacht besteed aan veiligheid ( zijn eigen bescherming tegen systeemoverbelasting, strikte controle van http-verzoeken, anti-ddos en nog veel meer). LiteSpeed ​​​​is beschikbaar voor Solaris, Linux, FreeBSD en Mac OS X. Het programma heeft een gebruikspercentage van 1,5%.

Natuurlijk zijn er nog veel meer soortgelijke programma's, maar het aandeel van hun gebruik en vertrouwen onder gebruikers is niet zo hoog als deze. Helaas kun je dit niet met slechts één programma doen. Het is niet alleen raadzaam om ze te gebruiken om mee te werken grote projecten, kan het nog steeds moeilijk zijn om te installeren en configureren. Bovendien is naast dergelijke servers ook een afzonderlijke installatie en configuratie van sommige programma's vereist ( bijvoorbeeld om met een database te werken). Dit alles veroorzaakt voor veel gebruikers aanzienlijke problemen. Wat te doen in dit geval?

Lokale serverfuncties

Op dit moment zijn dat er veel verschillende distributies, wat het leven van elke beginnende webmaster gemakkelijker kan maken. Ze zijn zeer eenvoudig te installeren, eenvoudig te bedienen, vereisen minder middelen en bevatten de nodige software-elementen voor de beste prestaties.

Dat is lokale server- dit is niet één programma ( niet één specifieke webserver), en een speciale collectie met lichtgewicht versies van complex serverprogramma's. Meestal omvat de montage: de server zelf ( meestal Apache, maar er kunnen ook andere zijn), PHP-compiler (met zijn hulp kan de browser de codes lezen en de pagina samenstellen), componenten voor het werken met databases, verschillende installatieprogramma's en vele andere programma's. Dit alles maakt de zaken veel eenvoudiger dan wanneer we elk programma afzonderlijk zouden installeren en configureren.

Daarnaast kunnen losse modules worden aangesloten op de basispakketten van lokale servers om de functionaliteit uit te breiden. Meer belangrijk kenmerk is dat het op sommige servers mogelijk is om vanaf een verwisselbare flashdrive te werken. Over het algemeen zijn dergelijke assemblages zeer geschikt voor snelle website-ontwikkeling, het testen van kleine en soms zelfs grote projecten.

Beoordeling van populaire lokale servers

Hier zijn enkele builds die nuttig voor u kunnen zijn:

  • (website - denwer.ru) is een gratis binnenlandse server die is ontworpen om te werken met websites, webapplicaties of internetpagina's. De ontwikkelaars zijn Dmitry Koterov en Anton Sushchev. Dit product bevat de nodige distributies voor vereenvoudigd werk. Dit omvat bijvoorbeeld Apache-webserver met diverse ondersteuning, phpMyAdmin en MySQL panel voor het werken met databases en andere programma's. U kunt ook werken vanaf een verwisselbare flashdrive. Helaas ondersteunt Denwer alleen het Windows-besturingssysteem.

  • XAMPP (website - www.apachefriends.org/en/xampp.html) is een speciale server gebouwd door Apache-vrienden. Met de benodigde distributies kunt u er een volwaardige webserver op draaien. Dit programma Het wordt gratis verspreid en ondersteunt werk op Windows, Solaris, Mac OS X en Linux. Er zijn ook de volgende voordelen: de server is populair vanwege zijn zeer eenvoudigheid gebruikersomgeving, waardoor het een favoriet is voor veel beginners; er zijn meerdere verschijningen van bijgewerkte versies; het updateproces is zeer eenvoudig en gebruiksvriendelijk; Er zijn aanvullende modules. Downloaden de vereiste versie u kunt ook vanaf een andere officiële website - sourceforge.net/projects/xampp/files.

  • (website - www.appservnetwork.com) is een uitstekende server van een Thaise fabrikant wiens concept is makkelijke installatie en het opzetten van alle distributies in 1 minuut. De eerste release van de assemblage vond plaats in 2001 en sindsdien is het aantal gebruikers voortdurend gegroeid. AppServ is zeer eenvoudig te installeren, het werkt stabiel en is niet slechter dan officiële en individuele releases, en de betrouwbare prestaties maken het mogelijk om een ​​volwaardige webserver op uw computer te creëren.
  • (website - vertrigo.sourceforge.net) is een andere goede en eenvoudig te installeren lokale server. De montage is zeer flexibel goed optreden en neemt weinig schijfruimte in beslag. Helaas werkt het voorlopig alleen op Windows OS.
  • Zend-server Community-editie (website - www.zend.com) is een gratis server van Zend, ontworpen om met webapplicaties te werken. Bevat alle benodigde componenten om snel een lokale server op uw computer te implementeren.

  • (website - open-server.ru) is een binnenlandse draagbare lokale server met hoge functionaliteit voor de ontwikkeling en creatie van websites en andere webprojecten. Heeft een meertalige interface ( inclusief Russisch) en is ontworpen voor gebruik op Windows OS. Werken vanaf verwisselbare media wordt ondersteund. Deze server zeer goed en dient als een goed alternatief voor Denver.

  • (website - wampserver.com) - nog een goede build met een Russische interface ( er zijn ook andere talen). Er is een eenvoudig en duidelijk menu en de gemakkelijke installatie en configuratie van de assemblage veroorzaakt geen bijzondere problemen. Configuratie kan worden uitgevoerd zonder de configuratiebestanden te beïnvloeden, wat erg handig is voor beginnende webmasters. De server wordt gratis verspreid en werkt alleen op Windows-platform. Helaas, draagbare versie Nog niet.
  • (website - easyphp.org) - een zeer eenvoudige montage met ondersteuning voor de Russische taal. De assemblage is onopvallend, heeft geen enorme functionaliteit en is vooral bedoeld voor het testen van kleine projecten. Er is ondersteuning voor het werken vanaf draagbare media. Deze server zal dienen als een goede vervanger voor Denver.

Dit waren dus de meeste populair internet servers die aandacht verdienen onder webmasters. Zoals je kunt zien, is er hier veel om uit te kiezen. U kunt de server die u leuk vindt downloaden en de samenstelling van de assemblage in detail ontdekken op de officiële websites die in de beschrijving zijn aangegeven. Ik raad u aan deze builds alleen van officiële sites te downloaden, aangezien andere sites mogelijk niet-werkende distributies of met bepaalde virussen kunnen posten. Nu zullen veel mensen niet langer de wens hebben om hun hosting te “forceren”, aangezien met dergelijke software het proces van het maken van websites en webapplicaties interessanter en spannender zal worden! Over het algemeen: bestuderen en implementeren!

(521 beoordelingen, gemiddeld: 5,00 uit 5)

Doel van de lezing: definieer het concept van “webserver” en vorm een ​​idee van de werking van dit mechanisme.

In de vorige lezing hebben we de werking van het HTTP-protocol begrepen. Laten we nu eens kijken hoe de tools die de eerder beschreven interacties tot stand brengen, werken. De werking van webapplicaties is gebaseerd op een concept als web Server. Een webserver is een programma dat inkomende HTTP-verzoeken ontvangt, deze verzoeken verwerkt, een HTTP-antwoord genereert en dit naar de client verzendt. Het algemene algoritme van een webserver kan als volgt worden weergegeven ( groente acties die door de webserver worden verwerkt, zijn gemarkeerd).

Nadat de gebruiker toegang heeft gehad specifieke hulpbron Met behulp van het HTTP-protocol doet een client (meestal een browser) een HTTP-verzoek aan een webserver. Meestal wordt een symbolische servernaam opgegeven (bijvoorbeeld "http://www.microsoft.com"). In dit geval converteert de browser deze naam eerst naar een IP-adres met behulp van DNS-services. Hierna wordt het gegenereerde HTTP-bericht via het HTTP-protocol naar de webserver verzonden. In dit bericht geeft de browser aan welke bron moet worden gedownload en zo Extra informatie. De taak van de webserver is om te luisteren op een specifieke TCP-poort (meestal poort 80) en alle inkomende HTTP-berichten te accepteren. Als de binnenkomende gegevens niet overeenkomen met het formaat HTTP-berichten, dan wordt een dergelijk verzoek genegeerd en wordt er een foutmelding teruggestuurd naar de client.

In het eenvoudigste geval moet de webserver, wanneer een HTTP-verzoek wordt ontvangen, de inhoud van het opgevraagde bestand van de harde schijf lezen, de inhoud ervan in een HTTP-antwoord verpakken en dit naar de client sturen. Als het vereiste bestand niet op de harde schijf wordt gevonden, genereert de webserver een foutmelding met de 404-statuscode en stuurt dit bericht naar de client. Dit type webserverwerking wordt gewoonlijk statische sites genoemd. In dit geval wordt er geen programmacode uitgevoerd aan de serverzijde, behalve programmacode de webserver zelf. Dergelijke werkscenario’s worden echter steeds ongeschikter en worden vervangen door volwaardige webapplicaties. Het verschil tussen deze toepassingen is dat HTML-documenten en andere bronnen niet als onveranderlijke gegevens op de server worden opgeslagen. In plaats daarvan slaat de server programmacode op die deze gegevens kan genereren op het moment dat het verzoek wordt verwerkt. Natuurlijk zijn sommige bronnen (zoals files trapsgewijze stijlen, afbeeldingen, enz.) kunnen worden opgeslagen als statische inhoud, maar de hoofdinhoud HTML-pagina's gegenereerd tijdens de verwerking. In dit geval moet de webserver bij het verwerken van een HTTP-verzoek contact opnemen met de programmacode, die de inhoud moet genereren. Rekening houdend met het bovenstaande zal het algoritme voor de werking van de webserver er als volgt uitzien.


Een van de belangrijkste taken die worden opgelost bij het bouwen van een webserver is het garanderen van schaalbaarheid (d.w.z. de mogelijkheid om het aantal gebruikers te vergroten) en beveiliging tegen aanvallen van buitenaf. Omdat de webserver in een open omgeving – het mondiale internet – opereert, is deze vaak overal toegankelijk. Dit maakt de webserver gevoelig zware lasten en mogelijke aanvallen. De meest voorkomende aanvallen op een webserver zijn het contacteren van de webserver met een groot aantal verzoeken en hoge frequentie. In dit geval zal de webserver niet alle verzoeken snel kunnen verwerken, en dit kan de prestaties van de webserver voor echte gebruikers beïnvloeden. Webservers die een andere externe programmacode uitvoeren dan de programmacode van de webserver zelf, zijn bijzonder gevoelig voor dergelijke aanvallen. Om dergelijke aanvallen te bestrijden, worden doorgaans alle verzoeken die afkomstig zijn van specifiek IP-adres. Bovendien moet er in dergelijke gevallen voor worden gezorgd dat de applicatiecode wordt geoptimaliseerd, bijvoorbeeld door caching te gebruiken - in dit geval zal bij het verwerken van elk verzoek de belasting van de centrale processor minder zijn, wat de taak van aanvallers aanzienlijk kan bemoeilijken .

Het is niet ongebruikelijk dat veel onafhankelijke websites op dezelfde webserver worden gehost. Bovendien gebruiken al deze websites hetzelfde IP-adres. Die. een webserver met slechts één IP-adres kan meerdere websites binnen zichzelf hosten, en aan elke dergelijke website zal worden gekoppeld eigen adres(Een webserver kan bijvoorbeeld de volgende websites hosten: “microsoft.com”, “gotdotnet.ru”, “techdays.ru”, enz.). Hoe wordt dit mogelijk? Dit fenomeen heet virtuele hosting. Om te begrijpen hoe dit werkt, kijken we nog eens naar het interactieproces tussen client en server. De browser stuurt een HTTP-verzoek naar het IP-adres van de webserver, dat aan de domeinnaam is gekoppeld. IP-adresresolutie vindt plaats met behulp van DNS-diensten. Hoewel het verzoek wordt verzonden met behulp van het ontvangen IP-adres, specificeert de client echter een extra HTTP "Host"-header die specificeert originele naam website. Dankzij deze informatie kan de webserver de toegang tot meerdere websites differentiëren en toch hetzelfde IP-adres gebruiken. Dit is erg belangrijk punt, want als voor elke domeinnaam een ​​apart IP-adres zou moeten worden geregistreerd, zou de adresruimte van het IP-protocol (v.4) zeer snel eindigen en zouden de kosten voor het hosten van een website op het wereldwijde internet veel hoger zijn. Laten we, om het duidelijker te maken, eens kijken hoe virtuele hosting werkt aan de hand van een voorbeeld. Stel dat u een webserver heeft met het IP-adres 85.51.210.22. Deze server host verschillende websites: mijnsite1.com, mijnsite2.com, mijnsite3.com. De DNS-servers zijn zo geconfigureerd dat elk van deze domeinnamen naar één enkel IP-adres verwijst, 85.51.219.22. Laten we eens kijken welke HTTP-verzoeken de browser zal genereren bij het openen van elke site. Wanneer u de site "mijnsite1.com" bezoekt, kan het HTTP-verzoek er als volgt uitzien:


Bij toegang tot de site "mysite2.com" zal het HTTP-verzoek er anders uitzien.


Bij het analyseren van HTTP-verzoeken is duidelijk zichtbaar dat de HTTP-header "Host" bij elk verzoek anders is. Het wordt dus duidelijk dat de webserver deze header parseert en de inhoud van de overeenkomstige site naar de client stuurt. Dit proces kan als volgt schematisch worden weergegeven.


Een soortgelijk virtueel hostingschema wordt gebruikt door de meeste bedrijven die websites op internet hosten. Omdat in dit geval op één fysieke server een groot aantal totaal verschillende sites kan hosten, dan is deze methode een van de goedkoopste. Binnen shared hosting is het echter meestal verboden om te draaien diverse diensten en diensten, en er is ook een beperking aan de mate van gebruik centrale verwerker. Dit betekent dat in het geval dat een website te veel serverbronnen verbruikt, de site-eigenaar wordt gevraagd om ofwel te upgraden naar een duurder plan (waarbij meer bronnen worden toegewezen), of als de toegestane drempel wordt overschreden, de website enige tijd wordt geblokkeerd. . Omdat er soms een grote hoeveelheid bronnen van de server nodig is of binnen deze server moet draaien extra toepassingen of diensten, gedeelde hosting kan niet altijd worden gebruikt. In dit geval huren ze meestal een dedicated server – fysiek of virtueel. Dit is echter een duurdere vorm van hosting van webapplicaties op internet, waardoor er vaak gebruik wordt gemaakt van virtuele hosting.

Zoals eerder vermeld, is het eenvoudigste scenario voor een webserver het ontvangen van een HTTP-verzoek, het verwerken ervan en het lezen het gewenste bestand vanaf de harde schijf, waarbij een HTTP-antwoord wordt gegenereerd en naar de client wordt verzonden. Dit scenario is het eenvoudigste, maar in werkelijkheid komt het steeds minder vaak voor. Feit is dat bij deze aanpak de inhoud die naar de client wordt overgedragen statisch is (dat wil zeggen dat deze niet verandert van verzoek tot verzoek). Als u echter een webapplicatie moet bouwen, moet de inhoud van de HTML-pagina die naar de client wordt verzonden, veranderen afhankelijk van verschillende externe omstandigheden (aanvraagparameters, database-inhoud, verwerkingstijd van aanvragen, gebruikerstype, enz.). In dit geval is het noodzakelijk om externe (in relatie tot de webserver) programmacode uit te voeren die de logica van de webapplicatie implementeert. Deze code moet gescheiden worden gehouden van de webserver zelf, aangezien de applicatiecode per applicatie verschillend zal zijn, maar de webserver hetzelfde zal zijn. De programmacode die HTTP-verzoeken verwerkt en HTTP-antwoorden genereert, kan dus in twee delen worden verdeeld:

  • programmacode die servicefuncties implementeert voor interactie via het HTTP-protocol (programmacode van de webserver zelf);
  • programmacode die de logica van een specifieke webapplicatie implementeert (bedrijfslogica, toegang tot een DBMS, enz.).

Omdat de webapplicatiecode meestal in afzonderlijke modules wordt verpakt en onafhankelijk wordt geleverd, zijn mechanismen voor interactie tussen deze twee delen vereist, d.w.z. interactie-interface. IN in dit geval Interactie-interface verwijst naar de reeks regels waarmee de webserver en applicatie met elkaar zullen communiceren. In feite zou het stroomdiagram voor de verwerking van verzoeken er als volgt uit kunnen zien:


Historisch gezien zijn er twee hoofdtypen interfaces tussen een externe applicatie en een webserver: CGI en ISAPI.

CGI (Gemeenschappelijke toegangspoort Interface) is de vroegste manier van interactie tussen een webserver en een webapplicatie. Het belangrijkste idee dat ten grondslag ligt aan CGI is dat wanneer het volgende HTTP-verzoek binnenkomt, de webserver de creatie van een nieuw bestand initieert. proces en geeft alle benodigde HTTP-verzoekgegevens door. Nadat dit proces is uitgevoerd, wordt het beëindigd en wordt het resultaat teruggestuurd naar de webserver. Omdat de webserver en applicatie vanuit het oogpunt verschillende processen zijn besturingssysteem Vervolgens worden interprocescommunicatiemiddelen (IPC) gebruikt om informatie tussen hen uit te wisselen - vaak zijn dit omgevingsvariabelen, benoemde pijpen, enz. Het grote voordeel van CGI is dat het webserverproces en de applicatie van elkaar geïsoleerd zijn en bij problemen in de webapplicatie zal het applicatieproces falen, terwijl het webserverproces zelf blijft functioneren.

Aan de andere kant brengt de noodzaak om elke keer een nieuw proces te creëren extra overhead met zich mee voor het creëren van processen (het creëren van processen is een dure operatie vanuit het oogpunt van het besturingssysteem) en gegevensoverdracht over procesgrenzen heen. Dit feit is een ernstig nadeel en heeft een aanzienlijke impact op de schaalbaarheid van de webapplicatie (het vermogen om te verwerken grote hoeveelheid binnenkomende verzoeken).

ISAPI(Internetserver-API) – Alternatieve manier interactie tussen een webserver en een webapplicatie. In tegenstelling tot CGI initieert de webserver bij interactie binnen de ISAPI-interface, wanneer het volgende verzoek binnenkomt, de creatie van een nieuw stroom binnen het hoofdproces waarin de webserver draait. Omdat het creëren van een thread vanuit het oogpunt van het besturingssysteem een ​​minder dure operatie is dan het creëren van een proces, zijn dergelijke applicaties in de praktijk doorgaans schaalbaarder. Het vereenvoudigt ook de interactie tussen de webserver en de webapplicatie omdat het gebruik maakt van één adresruimte binnen het besturingssysteem (aangezien alle code in hetzelfde proces draait). Echter, voor het geval dat serieuze problemen bij een webapplicatie die communiceert met een webserver binnen ISAPI loopt de webserver mogelijk ook het risico te worden beëindigd. Omdat de webserver en de webapplicatie in hetzelfde proces draaien, is dit inderdaad het geval. Daarom moeten ontwikkelaars van webservercode die ISAPI ondersteunt speciale aandacht aan dit probleem besteden.

Tegenwoordig is de meest gebruikelijke manier van interactie tussen een webserver en een webapplicatie de ISAPI-interface, omdat deze de meest optimale prestaties biedt op het gebied van overhead en schaalbaarheid. Wanneer er echter meerdere webapplicaties op dezelfde webserver worden uitgevoerd, bestaat de kans dat de ene applicatie de andere beïnvloedt. Als we het hebben over bedrijven die webapplicaties op hun servers hosten, kan er een situatie ontstaan ​​waarin de websites van concurrerende bedrijven tegelijkertijd op dezelfde webserver worden gehost. In dit geval zou een van de bedrijven theoretisch opzettelijk code kunnen uploaden die de webserver met een fout zou laten crashen, waardoor alle websites die op deze webserver worden gehost niet beschikbaar zouden zijn. Om een ​​dergelijke situatie te voorkomen, wordt een gecombineerde aanpak gebruikt: voor elke applicatie kan een applicatiepool worden gecreëerd afzonderlijk proces, waarin threads functioneren om inkomende HTTP-verzoeken van gebruikers te verwerken. Als een van de applicaties in dit geval code bevat die het proces met een fout beëindigt, wordt alleen het proces van deze applicatie beëindigd. Bovendien bevat elke applicatiepool een reeks vooraf gemaakte en voorbereide threads. Dit is nodig om geen tijd te verspillen aan het maken van een thread wanneer een inkomend verzoek binnenkomt. Deze set vooraf gemaakte threads wordt aangeroepen draad zwembad. Normaal gesproken controleert de webserver elke groep van toepassingen en als deze uitvalt, start de webserver het proces opnieuw.

Naast de bovengenoemde functies en mechanismen van een webserver omvatten de functies ervan vaak gerelateerde extra taken. Deze taken omvatten gebruikersauthenticatie en autorisatie, het bijhouden van een serverlogboek (om de werking van een webserver te debuggen), het ondersteunen van meerdere websites op één server (virtuele hosting), ondersteuning beveiligde verbindingen via HTTPS-protocol enz. Deze functies zijn in elk specifiek geval afhankelijk van de implementatie van de webserver.

Tegenwoordig zijn er een groot aantal verschillende implementaties van webservers. Een van de meest populaire en veelzijdige webservers is de open source Apache-webserver. Het is gemaakt om in te werken Linux-omgeving, is er ook een implementatie voor het werken binnen Windows. Er zijn diverse andere varianten bovenop gebouwd, zoals Apache Tomcat voor het draaien van webapplicaties Java-gebaseerd. Een ander, meest serieus product op dit gebied is Microsoft-webserver Internet Information Services (IIS), dat binnen het besturingssysteem draait Windows-systemen. Normaal gesproken voert deze webserver applicaties uit die zijn gebaseerd op ASP.NET (en aanverwante technologieën), evenals PHP-applicaties en statische websites. Bij het maken van webapplicaties op basis van ASP.NET zullen we IIS 7 gebruiken. Tenslotte zijn er nog andere, kleinere projecten voor het ontwikkelen van webservers, bijvoorbeeld Nginx. Dit project is ontwikkeld door een van de Rambler-ontwikkelaars om de prestaties hiervan te optimaliseren zoekmachine. Vervolgens bleek het project zo succesvol dat het in andere toepassingen werd gebruikt. Normaal gesproken wordt Nginx gebruikt wanneer het nodig is om een ​​infrastructuur met hoge belasting te bouwen.

Korte samenvatting

Een webserver is een programma dat binnenkomende HTTP-verzoeken verwerkt en HTTP-antwoorden genereert. In het eenvoudigste geval draagt ​​de webserver de inhoud van bestanden op de harde schijf van de server over naar de client. Wanneer het nodig is om HTTP-antwoorden te genereren op basis van bepaalde programmalogica, wordt externe programmacode aangesloten. Om externe programmacode aan te sluiten, worden CGI- en ISAPI-interfaces gebruikt. Op dit moment is het gebruik van de ISAPI-interface het meest veelbelovend vanwege de hogere schaalbaarheid. Binnen de webserver wordt een applicatiepool aangemaakt (voor elke webapplicatie een apart proces binnen het besturingssysteem, dat meerdere threads omvat om verzoeken te verwerken). Er is een groot aantal webserverimplementaties, waarbij ASP.NET-toepassingen doorgaans gebruik maken van de Microsoft Internet Information Services (IIS)-webserver.

Controle vragen

  • Wat is een webapplicatie?
  • Wat is een browser?
  • Beschrijf de cyclus van het verwerken van een verzoek aan een webapplicatie van een klant.
  • Waarom zijn er technologieën voor de ontwikkeling van webapplicaties nodig (zoals ASP.NET, PHP, Ruby On Rails, enz.).
  • Hoe werkt het HTTP-protocol en waar dient het voor?
  • Wat zijn HTTP-berichtkoppen en waarvoor dienen ze?
  • Wat is de hoofdtekst van een HTTP-bericht?
  • Hoe worden headers gescheiden van de berichttekst in een HTTP-bericht?
  • Wat is een HTTP-verzoekmethode?
  • Wat is de statuscode van het HTTP-antwoord?
  • Geef voorbeelden van HTTP-headers voor een HTTP-verzoek en een HTTP-antwoord.
  • Wat is het verschil symmetrische algoritmen encryptie van asymmetrisch?
  • Hoe werkt het veilige HTTPS-protocol?
  • Wat is een webserver?
  • Op basis van welke interfaces kunnen een webserver en een webapplicatie met elkaar communiceren?
  • Waarin verschilt CGI van ISAPI?
  • Wat is gedeelde hosting?
  • Wat is een applicatiepool?
  • Noem de meest populaire implementaties van webservers.
  • Op welke webserver draaien ASP.NET-applicaties?

In dit artikel leren we wat webservers zijn, hoe ze werken en waarom ze zo belangrijk zijn.

Invoering

De term ‘webserver’ kan zowel naar hardware als naar software verwijzen. Of zelfs dat beide delen samenwerken.

  1. Vanuit hardware-oogpunt is een ‘webserver’ een computer die sitebestanden (HTML-documenten, CSS-stijlen, JavaScript-bestanden, afbeeldingen, enz.) opslaat en deze aflevert op het apparaat van de eindgebruiker (webbrowser, enz.). D.). Het is verbonden met internet en is toegankelijk via een domeinnaam zoals mozilla.org.
  2. Vanuit softwareoogpunt omvat een webserver verschillende componenten die op zijn minst de toegang van internetgebruikers tot bestanden die op de server worden gehost, controleren. HTTP-server. Een HTTP-server is een stukje software dat (webadressen) en HTTP (het protocol dat uw browser gebruikt om webpagina's te bekijken) begrijpt.

Op het meest basale niveau, wanneer een browser een bestand nodig heeft dat op een webserver wordt gehost, vraagt ​​de browser dit op via het HTTP-protocol. Wanneer het verzoek de gewenste webserver (hardware) bereikt, accepteert de HTTP-server (software) het verzoek, vindt het opgevraagde document (zo niet, meldt een fout) en stuurt het terug, ook via HTTP.

Statische webserver, of stapel, bestaat uit een computer (hardware) met een HTTP-server (software). We noemen dit ‘statisch’ omdat de server de gehoste bestanden ‘as is’ naar de browser stuurt.

Dynamische webserver bestaat meestal uit een statische webserver en aanvullende software applicatie server En Database. We noemen het dynamisch omdat de applicatieserver de bronbestanden wijzigt voordat deze via HTTP naar uw browser worden verzonden.

Om bijvoorbeeld de laatste pagina te maken die u in een browser bekijkt, kan de toepassingsserver een HTML-sjabloon vullen met gegevens uit een database. Sites als MDN of Wikipedia bestaan ​​uit duizenden webpagina's, maar zijn niet echt HTML-documenten- slechts een paar HTML-sjablonen en gigantische databases. Deze structuur vereenvoudigt en versnelt het onderhoud van webapplicaties en de levering van inhoud.

Actief leren

Er is nog geen actief onderzoek beschikbaar. .

Laten we dieper duiken

Om een ​​webpagina te laden, zoals we eerder zeiden, stuurt uw browser een verzoek naar de webserver, die vervolgens in zijn eigen geheugenruimte zoekt naar het opgevraagde bestand. Nadat het bestand is gevonden, leest de server het, verwerkt het indien nodig en stuurt het naar de browser. Laten we deze stappen in meer detail bekijken.

Bestandshosting

Allereerst moet de webserver de websitebestanden bevatten, namelijk alle HTML-documenten en bijbehorende bronnen, inclusief afbeeldingen, CSS-stijlen, JavaScript-bestanden, lettertypen en video's.

Technisch gezien kunt u al deze bestanden op uw computer hosten, maar het is veel handiger om ze op een speciale webserver op te slaan die:

  • altijd actief
  • altijd verbonden met internet
  • heeft een vast IP-adres (niet alle providers bieden hiervoor een statisch IP-adres aan). thuis verbinding)
  • onderhouden door een derde partij

Om al deze redenen is het vinden van een goede hostingprovider een belangrijk onderdeel van het bouwen van uw website. Bekijk de vele bedrijfsaanbiedingen en kies er een die bij uw behoeften en budget past (aanbiedingen variëren van gratis tot duizenden dollars per maand). Details vindt u in

Zodra u uw hostingprobleem heeft opgelost, hoeft u alleen nog maar uw bestanden naar uw webserver te uploaden.

HTTP-communicatie

Ten tweede biedt de webserver HTTP-ondersteuning. H jawel T ext T overdracht P rotocol - hypertekst transportprotocol ). Zoals de naam al doet vermoeden, specificeert HTTP hoe hypertekst (dat wil zeggen gekoppelde webdocumenten) tussen twee computers moet worden overgedragen.

Een protocol is een set regels voor de communicatie tussen twee computers. HTTP-is tekstprotocol zonder de staat op te slaan.

Tekst Alle opdrachten zijn eenvoudige, voor mensen leesbare tekst. Slaat de staat niet op Noch de client, noch de server onthoudt eerdere verbindingen. Door bijvoorbeeld alleen op HTTP te vertrouwen, kan de server het wachtwoord dat u hebt ingevoerd niet onthouden of in welke stap van de transactie u zich bevindt. Voor dergelijke taken heeft u een applicatieserver nodig. (In toekomstige artikelen zullen we ons op deze technologieën concentreren.)

HTTP stelt strikte regels voor de interactie tussen client en server. We zullen iets later in een technisch artikel naar het HTTP-protocol zelf kijken. Voor nu is het voldoende om deze regels te kennen:

  • Uitsluitend klanten kan HTTP-verzoeken doen, en alleen aan servers. Servers kunnen alleen op HTTP reageren verzoeken van klanten.
  • Bij het opvragen van een bestand via HTTP moet de client een bestand genereren.
  • web Server moet antwoorden voor elk HTTP-verzoek, ten minste foutmelding.

Op een webserver is de HTTP-server verantwoordelijk voor het verwerken en reageren op inkomende verzoeken.

  1. Bij het ontvangen van een verzoek controleert de HTTP-server eerst of de bron op de opgegeven URL bestaat.
  2. Als dat zo is, stuurt de webserver de inhoud van het bestand terug naar de browser. Als dit niet het geval is, genereert de applicatieserver de vereiste bron.
  3. Als dit allemaal niet mogelijk is, stuurt de webserver een foutmelding naar de browser, meestal “404 Not Found”. (Deze fout komt zo vaak voor dat veel webontwerpers een grote hoeveelheid tijd besteden aan het ontwerpen van 404-foutpagina's.)

Statische en dynamische inhoud

Grof gezegd kan de server statische of dynamische inhoud aanbieden. Statische websites zijn het gemakkelijkst te maken, dus we raden u aan uw eerste website statisch te maken.

"Dynamisch" betekent dat de server de gegevens verwerkt of zelfs on-the-fly uit de database genereert. Dit biedt meer flexibiliteit, maar is technisch moeilijker te implementeren en te onderhouden, wat het proces van het maken van een website erg ingewikkeld maakt.

Laten we de pagina die u nu leest als voorbeeld nemen. Op de webserver waarop het wordt gehost, bevindt zich een applicatieserver die de inhoud van het artikel uit de database haalt, opmaakt, aan HTML-sjablonen toevoegt en het resultaat naar u verzendt. In ons geval heet de applicatieserver Kuma, deze is geschreven in de programmeertaal Python (met behulp van het Django-framework). Het Mozilla-team heeft Kuma gemaakt voor de specifieke behoeften van MDN, maar er zijn veel vergelijkbare applicaties die op totaal verschillende technologieën zijn gebouwd.

Er zijn zoveel applicatieservers dat het lastig is om er maar één voor te stellen. Sommige applicatieservers zijn op maat gemaakt voor specifieke categorieën websites, zoals blogs, wiki's of online winkels; andere, CMS'en (content management systemen) genoemd, zijn veelzijdiger. Als u een dynamische site bouwt, besteed dan wat tijd aan het kiezen van een tool die aan uw behoeften voldoet. Als u geen webprogrammering wilt leren (ook al is het op zichzelf leuk!), dan hoeft u niet uw eigen applicatieserver te bouwen. Dit wordt de uitvinding van een andere fiets.

Volgende stappen

Nu u bekend bent met webservers, kunt u:

  • lees hoe moeilijk het is om iets op internet te doen
  • Leer meer over de verscheidenheid aan software die nuttig kan zijn bij het maken van een website
  • ga richting de praktijk: bijvoorbeeld .