Beschrijving van webserverfuncties. Wat is een webserver. Webserver op een thuiscomputer: installatie

Als u afdrukt adresbalk uw browser http://www.site/how-web-server-work/ en klik Voer sleutel in- deze pagina van onze Website verschijnt op het scherm.

Eigenlijk basisniveau het volgende gebeurde: Uw browser maakte verbinding met de webserver, stuurde een verzoek om de webpagina van de pagina te ontvangen 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/

merk dat 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 computernetwerk . Een netwerk zorgt ervoor dat alle computers met elkaar kunnen communiceren. Een thuiscomputer kan het beste met internet worden verbonden verschillende manieren en apparaten - te beginnen met een primitief modem voor telefoonlijn, waarbij de verbinding wordt doorgepompt lokaal netwerk (LAN) bij internetprovider ( ISP).

Grote internetproviders ondersteunen glasvezellijnen voor een heel land of regio. Backbone-netwerken over de hele wereld aangelegd, verbonden via glasvezellijnen, onderzeese kabels of satellietkanalen. 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 services leveren (zoals webservers, FTP-servers, clouddiensten) voor andere machines zijn 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. De servercomputer kan bijvoorbeeld een software, waardoor het 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. De jouwe e-mail applicatie zal met de server “praten”. e-mail, 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. Geef een naam aan Wereld Breed 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 basis gegevens die namen en IP-adressen bevatten, en deze worden via 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 accepteert op een poort van buitenwereld en als de firewall de poorten niet beschermt, kunt u vanaf elke computer op internet verbinding maken met een vooraf bepaalde poort en de service 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. Voor samenwerking Computers op internet gebruiken de TCP/IP-protocollen. De webserver gebruikt HTTP-protocol.

Extra: Beveiliging

Uit deze beschrijving blijkt dat een webserver een vrij eenvoudig stukje software is. 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 is om een ​​login en wachtwoord aan te vragen 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 creditcards) kunnen via internet worden verzonden.

Dit is eigenlijk alles wat nodig is voor een webserver die standaard, statische webpagina's. Statische pagina's 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. Elke gastenboek Hiermee 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.

De pagina's van onze website zijn ook dynamisch, gemaakt met behulp van PHP-hulp gebruik maken van databanken MySQL-gegevens.

Een moderne website is niet alleen een reeks HTML-documenten, maar omvat ook vele technologieën, waaronder servertechnologieën, zoals: SSI (Server-Side Included), PHP (PHP: Hypertext Preprocessor, PHP: preprocessor hypertext), databases en nog veel meer . Om vertrouwd te raken met deze technologieën en deze te bestuderen, zou het een vergissing zijn om een ​​bezochte werkplek op internet te gebruiken, dus het is logisch om de benodigde set programma's op uw lokale computer te installeren en alles erop te testen.

De meest populaire combinatie van dergelijke programma's is Apache-webserver, taal PHP-programmering, MySQL databasebeheersysteem, shell voor databasebeheer PhpMyAdmin-gegevens, sjabloonengine Smarty.

Deze programma's werken voornamelijk onder Linux-achtige systemen, maar er zijn ook versies voor Windows. Het belangrijkste voordeel van deze bundel programma's is de veelzijdigheid ervan. Website gemaakt en getest lokale computer onder Windows, kan eenvoudig worden overgebracht naar een server waarop FreeBSD draait. Bovendien wordt deze set ondersteund door de overgrote meerderheid van de hosters.

In de toekomst zullen we programma's voor een thuiscomputer overwegen besturingssysteem Ramen.

Laten we kort beschrijven wat de technologieën zijn die zullen worden gebruikt om de site te maken.

Webserver

Een webserver is een programma dat binnenkomende verzoeken analyseert en kant-en-klare documenten genereert die naar de gebruiker worden verzonden. Apache wordt vaak gebruikt als webserver, omdat dit de meest gevestigde en populaire server op internet is. Volgens verschillende schattingen bedraagt ​​het aandeel bijna 50% van het totale aantal gebruikte webservers.

PHP

Een populaire programmeertaal die wordt gebruikt bij de ontwikkeling van websites.

MySQL

Databasebeheersysteem.

PhpMijnAdmin

Webinterface voor het maken en beheren van MySQL-databases. Hiermee kunt u tabellen bekijken, de inhoud ervan wijzigen, de structuur wijzigen, gegevens selecteren en informatie sorteren. Alle acties worden rechtstreeks in de browser uitgevoerd, in een gebruiksvriendelijke interface die speciaal daarvoor is ontworpen.

Slim

Krachtig sjabloonsysteem voor PHP. Gebruikt een eigen taal die HTML en speciale Smarty-tags combineert. Voor scheiding zijn sjablonen nodig programmacode en presentatie van het document of anderszins, om logica van inhoud te scheiden.

Alle gespecificeerde programma's en technologieën zijn open source, gratis te downloaden en gratis te gebruiken.

Kan worden geïnstalleerd noodzakelijke programma's, download ze van de website van de fabrikant en pas ze aan uw behoeften aan. Dit vereist echter soms bekendheid met het programma en het bezit van de nodige kwalificaties, die beginners niet hebben. Sinds waar we het over hebben niet over een volwaardige werkende server, maar over een computer voor testen en debuggen, dan is het logisch om kant-en-klare kits te gebruiken. Deze kit bevat alle programma's die nodig zijn voor een webontwikkelaar en is eenvoudig te configureren en te beheren. Vervolgens zullen we het hebben over enkele populaire webontwikkelingskits.

Het internet is met enorme snelheid ons leven binnengedrongen. Hij heeft iedereen voor zichzelf getemd, verstrikt in zijn web en zal ons niet meer loslaten. Terwijl ze elke dag door tientallen en honderden pagina's van websites scrollen, denken maar weinig mensen na over wat dit wereldwijde internetnetwerk is, hoe het werkt, wat deze of andere termen betekenen. Vandaag zullen we het hebben over wat een webserver is, waarvoor deze nodig is en welke functies deze vervult.

Wat wordt bedoeld met de term webserver? Een verzameling webservers vormt de basis van internet. Als zij er niet waren geweest, zou dat er niet zijn wereldwijde web. Gebruikers zouden eenvoudigweg niet meer met elkaar kunnen communiceren, de informatie kunnen vinden die ze nodig hebben, of hun websites en blogs kunnen maken en onderhouden. Webservers kunnen computers of speciale programma's zijn die als server fungeren.

Webserverfuncties

De hoofdtaak van de webserver is het accepteren van HTTP-verzoeken van gebruikers, het verwerken ervan en het omzetten ervan naar digitaal computercode. Geef vervolgens HTTP-reacties uit en converteer deze van miljoenen nullen en enen naar afbeeldingen, mediastreams, brieven en HTML-pagina's.

Voor gebruiksgemak door gebruikers moet elke webserver een handige webbrowser hebben. Het stuurt verzoeken naar de webserver, omgezet in URL's van internetbronnen.

Samen met standaard kenmerken, hebben sommige webservers extra servers. Zo kan de bijbehorende software bijvoorbeeld het aantal gebruikersverzoeken aan een bepaalde bron registreren en deze in een apart logboek vastleggen. Ze kunnen ook HTTPS ondersteunen, wat belangrijk is voor een veilige verbinding tussen sites en gebruikers. Vaak wordt er naast een mailserver ook een webserver geïnstalleerd. Hierdoor kunnen gebruikers snel rechtstreeks vanaf de site naar de e-mailpagina gaan door op slechts één hyperlink te klikken.

Waar is een webserver voor?

Zoals uit het bovenstaande al blijkt, heeft iedereen die internet gebruikt om informatie uit te wisselen een webserver nodig. Over het algemeen is het echter niet een persoon die er toegang toe moet hebben, maar programma's en apparaten. Bijvoorbeeld, antivirusprogramma's Ze vragen vaak om een ​​server op het netwerk te vinden en hun databases bij te werken. Actief samenwerken met webservers mobiele telefoons, tv's en andere apparaten met internettoegang. In dit geval kunnen programma's worden geconfigureerd om automatische update. Vervolgens deelname van gebruikers dit proces praktisch onnodig zal zijn. Maar het is nog steeds beter om sommige bijgewerkte databases zelf te beheren.

De bekendste webservers

De bekendste en wijdverspreide webservers zijn Microsoft IIS en Apache. De meest populaire daarvan is Apache. De software wordt gebruikt door meer dan 60% van alle bestaande. Dit is grotendeels mogelijk vanwege het feit dat Apache gratis is. Ontwikkelaars analyseren voortdurend de fouten van hun product en elimineren deze. Het nadeel van het programma is dat het over het algemeen bedoeld is voor professionele programmeurs en gebruikers, waardoor het behoorlijk lastig te onderhouden en te configureren is.

Microsoft daarentegen heeft zijn eigen web IIS-server streeft ernaar om het begrijpelijk te maken voor de gemiddelde gebruiker. Alle instellingen kunnen zonder specialisten worden uitgevoerd. Het is goed mogelijk dat dit programma qua aantal gebruikers de concurrent met een Indiase naam kan inhalen.

Zowel Apache als IIS werken perfect met veel besturingssystemen, bijvoorbeeld Mac OS, Linux en verschillende aanpassingen Microsoft Windows en vele anderen. Deze twee webservers zijn stabiel in gebruik en hebben goede snelheid, kunt u er extra modules op aansluiten.

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 mogelijk maken, werken. De werking van webapplicaties is gebaseerd op een concept als webserver. Een webserver is een programma dat binnenkomende HTTP-verzoeken accepteert, deze verzoeken verwerkt, een HTTP-antwoord genereert en dit naar de client verzendt. Het algemene algoritme van de webserver kan als volgt worden weergegeven (acties die door de webserver worden verwerkt, zijn groen 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-diensten. 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 alle aanvullende 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 lezen harde schijf, verpak de inhoud ervan in een HTTP-antwoord en stuur het naar de client. 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 aan de serverzijde uitgevoerd, behalve de programmacode van 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 de webserver tijdens de verwerking moet toegang hebben tot 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 meest belangrijke taken die worden opgelost bij het bouwen van een webserver is het garanderen van schaalbaarheid (d.w.z. de mogelijkheid om het aantal bediende gebruikers te vergroten) en beveiliging tegen aanvallen van buitenaf. Omdat de webserver in een open omgeving draait − mondiaal netwerk Het internet is 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 opnieuw 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. Omzetting van IP-adressen vindt plaats met behulp van DNS-services. Hoewel het verzoek wordt verzonden met behulp van het ontvangen IP-adres, specificeert de client echter een extra HTTP "Host"-header die specificeert 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, omdat als het voor elke domeinnaam nodig zou zijn om een ​​afzonderlijk IP-adres te registreren, de adresruimte van het IP-protocol (v.4) zeer snel zou eindigen en de kosten voor het hosten van een website op het wereldwijde internet veel hoger zouden 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. DNS-servers 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 hostingprogramma wordt gebruikt door de meeste bedrijven die betrokken zijn bij het hosten van websites op internet. 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 de website te veel verbruikt serverbronnen , dan wordt de site-eigenaar gevraagd om ofwel te upgraden naar een duurder plan (met meer toegewezen bronnen), of als de toegestane drempel wordt overschreden, wordt de website enige tijd geblokkeerd. Omdat er soms een grote hoeveelheid bronnen van de server nodig is of er extra applicaties of services binnen de server moeten worden uitgevoerd, 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 interactie-interfaces geweest: externe toepassing en webservers - CGI en ISAPI.

CGI(Gewoon Gateway-interface) is de vroegste interactiemethode 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 dat zijn verschillende processen vanuit het oogpunt van het besturingssysteem worden middelen gebruikt om informatie tussen hen uit te wisselen communicatie tussen processen(IPC) – vaak dit omgevingsvariabelen, genaamde 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 overheadkosten met zich mee voor het creëren van een proces (het creëren van een proces is een dure operatie vanuit het oogpunt van het besturingssysteem) en het overbrengen van gegevens 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 meer binnenkomende aanvragen).

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 ​​goedkopere 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 ernstige 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 webapplicatie in hetzelfde proces draaien, is dit inderdaad het geval. Daarom moeten ontwikkelaars van webservercode die ISAPI ondersteunt speciale aandacht besteden aan dit probleem. Tegenwoordig is de meest gebruikelijke manier van interactie tussen een webserver en een webapplicatie de ISAPI-interface, omdat deze de meeste mogelijkheden 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 de situatie ontstaan ​​dat 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 de webserver omvatten de functies ervan vaak gerelateerde extra taken. Deze taken omvatten gebruikersauthenticatie en -autorisatie, het bijhouden van een serverlogboek (voor het opsporen van fouten in de werking van een webserver), het ondersteunen van meerdere websites op één server (virtuele hosting), ondersteuning beveiligde verbindingen via het 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 webserver. broncode Apache. Het is gemaakt om in te werken Linux-omgeving, is er ook een implementatie voor het werken binnen Windows. Er werden bijvoorbeeld diverse andere varianten op gebouwd Apache Tomcat om webapplicaties op te draaien 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 toepassingen 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 van deze zoekmachine te optimaliseren. 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 verzendt de webserver de inhoud van bestanden die zich op de harde schijf van de server bevinden 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. IN huidige moment

Het meest veelbelovend is het gebruik van de ISAPI-interface 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.

  • Beveiligingsvragen
  • 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. Hoe zijn ze anders? 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?
  • Noem de meest populaire implementaties van webservers.
  • Op welke webserver draaien ASP.NET-applicaties?

We hebben een nieuw boek uitgebracht “Content Marketing in sociale netwerken: Hoe je in de hoofden van je abonnees kunt kruipen en ze verliefd kunt maken op je merk.”

Abonneren

Een webserver is een server die verzoeken van de gebruiker accepteert en deze voorziet van antwoorden: een document, pagina of website.


Meer video's op ons kanaal - leer internetmarketing met SEMANTICA

Elke computer kan in een server worden veranderd. Om dit te doen, moet je een speciale shell installeren.

Vereisten voor het technische gedeelte worden bepaald door het aantal toegewezen bronnen en snelheidsvereisten. Hoe groter ze zijn, hoe krachtiger de computer zou moeten zijn.
Laten we, om het duidelijk te maken, een analogie geven. Je gaat naar de bibliotheek en vraagt ​​of ze je een boek willen geven. De bibliothecaris vindt het exemplaar dat u nodig heeft en geeft het aan u. De bibliotheek is een server; alle gegevens worden erin opgeslagen. De bibliothecaris is de shell die het verzoek heeft geaccepteerd en het antwoord heeft verzonden. Jij bent de klant.
U kunt een bibliothecaris sturen aanvullende informatie– vergelijkbaar met klikken op een link. Het verschil is dat dezelfde bron op internet door een onbeperkt aantal gebruikers tegelijk kan worden gelezen.
De klantenservice volgt een soortgelijk principe: als we een boek komen ophalen, kunnen we de bibliothecaris een vraag stellen ( zoekmachine) of kijk naar de index (Yandex Catalog). Dit helpt u de informatie te vinden die u nodig heeft.

Wat doet een webserver?

Zijn hoofdtaak– informatieopslag. Pagina's, bestanden, afbeeldingen, tekstinhoud.
Taken:

  • Ontvang verzoeken.
  • Voer programma's uit in speciale programmeertalen (server).
  • Maak webpagina's.
  • Stuur ze terug naar de gebruiker.
  • Bescherm informatie.
  • Identificeer bezoekers.
  • Houd een logboek bij van verzoeken.
  • Serveer verzoeken van andere typen: mailto, enz.

Om te begrijpen hoe een webserver werkt, moet u de principes van informatieoverdracht op het netwerk begrijpen. Het is gebaseerd op regels die protocollen worden genoemd: elke URL begint met een aanduiding van het type (ftp, http://, https://, enz.).
Hypertekst Overdrachtsprotocol– transmissieprotocol. Sitepagina's zien er altijd zo uit hypertekstdocument. Dit is het eindresultaat van elk server- of clientprogramma.

  • Wanneer een gebruiker een adres invoert of op een link klikt, doet de browser een verzoek door de informatie volgens deze regels te coderen.
  • De host waaraan dit adres is gebonden, voert serverprogramma's uit. Elk van hen vervult zijn eigen functies.
  • De ontvangen gegevens worden gedecodeerd en de opdrachten worden uitgevoerd.
  • Hypertekst wordt gegenereerd, gecodeerd en teruggestuurd.
  • De browser ontvangt het antwoord, converteert de code naar html en geeft de pagina weer op het scherm.

Wat is nodig voor een webserver

We hebben een machine nodig die alle verzoeken verwerkt. Schat de belasting in die de server moet kunnen weerstaan. Het hangt af van het aantal bezoekers: hoe meer aanvragen, hoe meer stroom er nodig is.

Er zijn speciale bedrijven die hostingdiensten aanbieden. U huurt de server. U krijgt een quotum voor het hosten van sitebestanden.
Maar als u een eenvoudige website heeft, kunt u dit ook zelf doen.

Wanneer het probleem met de server is opgelost, moet u er een statisch IP-adres aan koppelen.

De site wordt beschikbaar op de webserver nadat deze is geregistreerd domeinnaam, adresvertaling voltooid DNS-service- het koppelen van een IP-adres (bijvoorbeeld 111.111.111.111) en een domeinnaam (www.site.com).

Meest voorkomende servers

Apache

Dit is een gratis, vrij gedistribueerd product dat veel voordelen biedt:

  • Constante ondersteuning voor ontwikkelaars.
  • Modules om mee te werken talen op de server programmeren van PHP, Perl, Python, Ruby, ASP, etc.
  • Open-source. Verschillende programmeurs zijn bezig met aanpassingen om aan hun behoeften te voldoen. De Russischtalige gemeenschap past het bijvoorbeeld aan de Russische codering aan.
  • . Oorspronkelijk gemaakt voor Unix, maar nu ondersteund door Windows, Mac OS, BSD, Linux, OS/2 en Novell NetWare.
  • Veiligheid.

Geef tijdens de installatie uw hostnaam op, bijvoorbeeld localhost. Kopieer een willekeurige HTML-pagina naar de map htdocs, die zich in de map Apachex.x bevindt (waarbij x.x het versienummer is). Of maak het in Kladblok door tekst in te voeren en op te slaan met de html-extensie.

Wanneer het bestand in de map verschijnt, opent u uw browser en typt u het adres: localhost://PAGE NAME.html. Uw tekst verschijnt op het scherm - de pagina wordt geopend vanaf de server. Als u de foutmelding 'Kan geen toegang tot de site krijgen' ziet, betekent dit dat Apache niet actief is. Het pictogram bevindt zich in de lade.
Klik erop en selecteer "Afspelen". Hierna zal alles werken.

NGNIX

Het aandeel actieve sites dat erop actief is, bedraagt ​​21,13% (Netcraft-onderzoek). Het wordt vooral gebruikt door grote bedrijven en professionele ontwikkelaars: Yandex, Mail.ru, Rambler, etc. NGNIX is bestand tegen een enorme hoeveelheid bezoekers, is betrouwbaar, veilig en goed doordacht.
Gratis verspreid, maar betaalde exemplaren zijn verschenen Plus-versies, kosten vanaf $ 2.500.

IIS

Zijn bekendheid wordt verzekerd door de beroemde naam van de ontwikkelaar. Het is een set webservices en is geïntegreerd met Windows. Het native programmeerplatform is ASP.NET, maar een alternatief zoals PHP kan worden geïmplementeerd.

Voor volledige hosting moet u een serverbesturingssysteem van Microsoft installeren - Windows-server. Versie 6 was helemaal niet bedoeld voor hosting, volledige ondersteuning begon om 7. Het wordt automatisch samen met het besturingssysteem aangeschaft en is afhankelijk van de kenmerken ervan.

Installatiepakketten

Voor beginnende programmeurs en ontwikkelaars worden er tools gemaakt waarmee je met een paar klikken een webserver op je computer kunt implementeren.

  • OpenServer. Draagbare ontwikkelomgeving die veel databases, programmeertalen en hun versies omvat, evenals aanvullende diensten. Bijvoorbeeld de interface voor het werken met de PhpMyAdmin-database. Tegenwoordig is dit de meest populaire installatiekit. Het werkt zelfs vanaf een flashdrive. Gratis downloaden op lage snelheid. Voor 100 roebel neemt de snelheid aanzienlijk toe.
  • Xampp. Actief ondersteund pakket: Apache, Php, Perl, MariaDB, etc. Heeft een configuratiescherm. Gratis downloaden.
  • . Zeer handig setje allemaal het juiste gereedschap, inclusief Apache, PHP, MySQL, PhpMyAdmin. Helaas, nieuwste versie omvat oude distributies. Over het algemeen zijn ze ook geschikt voor training. Afgaande op het forum wordt het project niet langer ondersteund.