Om een website toegankelijk te maken op het internet is een speciale server nodig voor de inhoud ervan. Om deze continu toegankelijk te maken, moet de betreffende server permanent online zijn. Terwijl de meeste websitebeheerders hiervoor de datacenters van internetproviders gebruiken, beschikken grote bedrijven en organisaties vaak over eigen webservers waarop zij hun intranet- en internetinhoud hosten. In dit artikel leert u hoe een webserver werkt, welke verschillende oplossingen er zijn en waar u zeker rekening mee moet houden wat betreft de beveiliging.
Inhoudsopgave
Een webserver is primair verantwoordelijk voor de betrouwbare levering van statische en dynamische inhoud aan de verzoekende clients.
Ja, maar de gebruikte serversoftware moet altijd compatibel zijn met het besturingssysteem van de host.
Je kunt bijvoorbeeld de single-board computer Raspberry Pi ombouwen tot een webserver op basis van nginx. We leggen uit hoe dit werkt in het laatste deel van dit artikel.
1. wat is een webserver?
Per definitie verwijst de term “webserver” naar twee heel verschillende dingen: Enerzijds verwijst hij naar een webdienst die de componenten en informatie van een website levert en deze via een webbrowser (bv. Firefox of Chrome) aan een client doorgeeft . In dit geval is de webserver software die op een daarvoor uitgeruste computer of een hostingproduct draait.
De term wordt echter vaak gebruikt als synoniem voor de eigenlijke hardware (de zogenaamde “host”). Dat is onjuist, want afhankelijk van de geïnstalleerde software kan deze ook worden gebruikt als bestandsserver, FTP-server of voor heel andere doeleinden.
Een webserver kan zowel lokaal als in bedrijfsnetwerken worden gebruikt, wat betekent dat de betrokken inhoud zowel decentraal als wereldwijd beschikbaar is, afhankelijk van het gekozen doel. Op Internet wordt hij echter voornamelijk gebruikt als WWW-dienst. Elke webserver is ook in staat de inhoud gelijktijdig aan verschillende computers te leveren.
Hoe werkt een webserver?
De webserver werkt als “bemiddelaar” tussen de inhoud van een website en de client die deze oproept. Als u een internetadres (bijvoorbeeld www.wintotal.de) in uw browser invoert, stuurt deze een verzoek naar de naamserver, die op zijn beurt uit de domeinnaam het bijbehorende IP-adres bepaalt .
De HTTP-client van de browser maakt vervolgens via TCP (of soms via UDP) een verbinding met de webserver en stuurt deze een verzoek om een webpagina. Aangezien volledige webpagina’s bestaan uit verschillende HTML-componenten, afbeeldingen, foto’s en video’s, moet voor elk bestand een afzonderlijke aanvraag worden gedaan, die de webserver beantwoordt door de overeenkomstige inhoud door te sturen. Daartoe stuurt de HTTP-server de aangevraagde bestanden naar de HTTP-client, die ze met behulp van een interpreter op het scherm weergeeft. Zodra de client de volledige webpagina heeft ontvangen, wordt de TCP-verbinding weer gesloten.
Goed om te weten: Webservers zijn in staat om parallel aan veel verschillende computers of browsers website-inhoud te leveren. Hoeveel gebruikersverzoeken in welke tijd kunnen worden verwerkt, hangt onder meer af van de gebruikte hardware en de belasting van de host.
De geretourneerde HTML-pagina kan statisch op de webserver worden opgeslagen of op verzoek dynamisch worden gegenereerd. Dit betekent dat de webserver overeenkomstige programmacode (bv. Java, Python of PHP) moet uitvoeren alvorens te reageren. Dynamische webpagina’s vereisen over het algemeen meer middelen dan statische inhoud.
3 Vergelijking van verschillende oplossingen
Experts met de juiste technische kennis configureren hun servers meestal zelf en werken met verschillende technologieën. Voorwaarde is natuurlijk dat de gebruikte serversoftware compatibel is met het besturingssysteem van de host. Als u zich niet in detail met de configuratie wilt bezighouden, kunt u als alternatief een vooraf geconfigureerde webserver huren bij een provider op internet.
De meeste webserverprogramma’s zijn gebaseerd op Unix of Linux, maar kunnen ook onder Windows draaien. De enige uitzondering is Microsoft IIS, dat uitsluitend op Windows-servers draait. De bekendste aanbieders van webserversoftware zijn:
- Apache HTTP-server (open source, kan op verschillende platforms worden gebruikt).
- Apache Tomcat (open source, kan worden geïntegreerd in andere webservers, bijvoorbeeld Apache HTTP-server of IIS)
- Microsoft IIS (kan alleen worden gebruikt op Windows-servers)
- nginx (gratis, kan ook worden gebruikt als reverse proxy)
- LiteSpeed Web Server (voor Linux en Unix, beschikbaar als open source of bedrijfsversie)
Het beheer van de webserver gebeurt meestal via toegang op afstand vanaf een andere computer. Deze computer hoeft niet noodzakelijk hetzelfde besturingssysteem te hebben als de server zelf. De handigste manier is het gebruik van software voor onderhoud op afstand, waarvan Plesk van Obsidian een van de bekendste is. Hiermee kan een webserver zowel vanaf een Windows- als een Linux- of Unix-computer worden beheerd.
4. webservers en het beveiligingsvraagstuk
Als u een server beheert, moet u ook nadenken over beveiliging, omdat daarvoor op het internet dezelfde gevaren bestaan als voor een “gewone” pc. Naast het kiezen van een veilig besturingssysteem zijn er een aantal andere basismaatregelen die u in ieder geval moet nemen:
- Houd uw webserver up-to-date en installeer altijd de laatste updates. Verouderde servers bieden aanvalsoppervlakken voor hackers en cybercriminelen, die in het ergste geval de controle over het hele systeem kunnen krijgen. Bij shared en managed hosting wordt deze taak meestal overgenomen door de betreffende provider.
- Installeer de minimale versie van het besturingssysteem en alleen software die u echt nodig hebt. Stop onnodige diensten en sluit indien mogelijk alle ongebruikte poorten.
- Wijs alleen minimale rechten toe aan gebruikers en applicaties.
- Kies zo veilig mogelijke wachtwoorden en activeer de firewall.
- Installeer een SSL-certificaat. Dit is een digitale registratie die een cryptografische sleutel koppelt aan de gegevens van een organisatie en de authenticiteit van personen en objecten bevestigt (bijvoorbeeld bij het inloggen).
- Controleer regelmatig of er wijzigingen zijn aangebracht in programma’s of diensten.
- Log- en logbestanden opslaan en voortdurend controleren.
- Maak regelmatig back-ups om in geval van een storing het systeem zonder hiaten te kunnen herstellen.
5 De Raspberry Pi als webserver
5.1. Nginx instellen
Als je een Raspberry Pi hebt, kun je ook zelf een webserver bouwen. Er zijn verschillende oplossingen of webserverprogramma’s mogelijk, maar om stabiliteitsredenen kiezen we voor dit voorbeeld nginx. Ga als volgt te werk voor de installatie:
- Update eerst je Raspberry Pi naar de laatste versie. Voer hiervoor de volgende commando’s uit:
sudo apt-get update
sudo apt-get upgrade
- Installeer vervolgens het webserverpakket via
sudo apt-get install nginx
- Start de server via het commando
sudo /etc/init.d/nginx start
- U kunt nu de door nginx gegenereerde testpagina oproepen. Open hiervoor de browser van je Raspberry Pi en voer in
http://localhost/
en typ in
Tip: Om de testpagina vanaf een andere computer in het netwerk te benaderen, voert u in de browser het adres http://IP-Adresse-des-Raspberry/ in. U kunt het IP-adres van uw Raspi achterhalen via de console met het commando “hostname -l”.
5.2 PHP installeren
Om ervoor te zorgen dat uw webserver dynamische webpagina’s kan aanbieden, moet u in de volgende stap PHP installeren:
- Installeer het PHP-pakket via het commando
sudo apt-get install php5-fpm
- Activeer nu PHP in nginx. Ga hiervoor naar de nginx-directory en open de configuratiepagina in de NANO-editor:
cd /etc/nginx
sudo nano sites-enabled/default
- Vervang in het document
index index.html index.htm
door
index.php index.html index.htm
- Verderop in het bestand, zoek naar de vermelding
# geef de PHP scripts door aan de FastCGI server die luistert op 127.0.0.1:9000
en verwijder de hash uit de volgende zes regels:
location ~ .php$ {}
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
- Sla de configuratie op en herstart nginx:
sudo /etc/init.d/nginx reload
- Navigeer naar de map met de standaard webpagina door in de console te typen
cd /usr/share/nginx/www/
en de bestaande “index.html” te vervangen door “index.php”. Deze laatste kun je dan vullen met de gewenste inhoud.