## Server blokken instellen

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 n oorderpoort, 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/html`Laten we, in plaats van te wijzigen, een directory-structuur aanmaken `/var/www`voor onze site n oorderpoort, en laten we deze `/var/www/html`als de standaard directory gebruiken als een verzoek van een klant niet overeenkomt met andere sites.

Maak de map voor noorderpoort als volgt, gebruik de `-p`vlag om de benodigde bovenliggende mappen te maken:

    sudo mkdir -p /var/www/noorderpoort/html

Wijs vervolgens het eigendom van de directory toe met de `$USER`omgevingsvariabele:

    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.html`met `nano`of 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 `root`configuratie hebben bijgewerkt naar onze nieuwe directory en de `server_name`naar onze domeinnaam.

Laten we vervolgens het bestand inschakelen door er een link van te maken naar de `sites-enabled`directory, 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 `listen`en `server_name`richtlijnen.

- `your_domain`: Zal ​​reageren op verzoeken om `your_domain`en `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.conf`bestand aan te passen. Open het bestand:

    sudo nano /etc/nginx/nginx.conf

Zoek de `server_names_hash_bucket_size`richtlijn 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:

- Het kan zijn dat Nginx de default page blijft serveren.
  - In /etc/nginx/sites-available zit het default bestand. Verwijder het default bestand
  - in /etc/nginx/sites-enabled staat de symlink nog van de default. Ook deze verwijderen!
- Test de configuratie
- Herstart Nginx
- Denk om je Firewall