Bij gebruik van de Nginx-webserver kunnen serverblokken (vergelijkbaar met virtuele hosts in Apache) worden gebruikt om configuratiedetails in te kapselen en meer dan één domein te hosten vanaf een enkele server. We zullen een domein opzetten met de naam noorderpoort, maar je moet dit vervangen door je eigen domeinnaam.
Nginx op Ubuntu 20.04 heeft standaard één serverblok ingeschakeld dat is geconfigureerd om documenten uit een map op /var/www/html. Hoewel dit goed werkt voor een enkele site, kan het onpraktisch worden als je meerdere sites host. /var/www/htmlLaten we, in plaats van te wijzigen, een directory-structuur aanmaken /var/wwwvoor onze site noorderpoort, en laten we deze /var/www/htmlals de standaard directory gebruiken als een verzoek van een klant niet overeenkomt met andere sites.
Maak de map voor noorderpoort als volgt, gebruik de -pvlag om de benodigde bovenliggende mappen te maken:
sudo mkdir -p /var/www/noorderpoort/html
Wijs vervolgens het eigendom van de directory toe met de $USERomgevingsvariabele:
sudo chown -R $USER:$USER /var/www/noorderpoort/html
De naam noorderpoort is gekozen door mij, deze mag je naar eigen wens aanpassen.
Maak vervolgens een voorbeeldpagina index.htmlmet nanoof je favoriete editor:
nano /var/www/noorderpoort/html/index.html
Voeg een voorbeeld-HTML toe.

Om Nginx deze inhoud te laten leveren, is het nodig om een serverblok met de juiste richtlijnen te maken. In plaats van het standaard configuratiebestand rechtstreeks te wijzigen, laten we een nieuw bestand maken op :/etc/nginx/sites-available/noorderpoort
sudo nano /etc/nginx/sites-available/noorderpoort
Maak het volgende configuratieblok, dat vergelijkbaar is met het standaard, maar bijgewerkt voor onze nieuwe directory en domeinnaam:

server {
listen 80;
listen [::]:80;
root /var/www/noorderpoort/html;
index index.html index.htm;
server_name noorderpoort www.noorderpoort;
location / {
try_files $uri $uri/ =404;
}
}
Merk op dat we de rootconfiguratie hebben bijgewerkt naar onze nieuwe directory en de server_namenaar onze domeinnaam.
Laten we vervolgens het bestand inschakelen door er een link van te maken naar de sites-enableddirectory, waaruit Nginx leest tijdens het opstarten:
sudo ln -s /etc/nginx/sites-available/noorderpoort /etc/nginx/sites-enabled/
Twee server blokken zijn nu ingeschakeld en geconfigureerd om te reageren op verzoeken op basis van hun listenen server_namerichtlijnen.
your_domain: Zal reageren op verzoeken om your_domainen www.your_domain.default: Reageert op alle verzoeken op poort 80 die niet overeenkomen met de andere twee blokken.Om een mogelijk hash-bucket-geheugenprobleem te vermijden dat kan ontstaan door het toevoegen van extra servernamen, is het nodig om een enkele waarde in het /etc/nginx/nginx.confbestand aan te passen. Open het bestand:
sudo nano /etc/nginx/nginx.conf
Zoek de server_names_hash_bucket_sizerichtlijn en verwijder het #symbool om het commentaar op de regel te verwijderen.

Test vervolgens om er zeker van te zijn dat er geen syntaxisfouten zijn in uw Nginx-bestanden:
sudo nginx -t
Als er geen problemen zijn, start je Nginx opnieuw om uw wijzigingen door te voeren:
sudo systemctl restart nginx
Nginx zou nu je domeinnaam/IP-adres moeten bedienen

Debug: