Heeft u een server met een enkel openbaar IP-adres, maar moet u meerdere domeinen of subdomeinen hosten? Wat zou u doen? Deze situatie kan verwarrend zijn als u een beginner bent. Maar maak je geen zorgen, deze tutorial heeft alles wat je nodig hebt, zodat je een NGINX subdomein en meerdere domeinen kunt hosten.
In deze tutorial leer je hoe je effectief NGINX subdomeinen of meerdere domeinen kunt hosten op één server met een enkel IP-adres!
Als je er klaar voor bent, laten we aan de slag gaan!
Vereisten
Deze tutorial bevat hands-on demonstraties maar vereist niet veel voorafgaande kennis en gaat ervan uit dat je een Ubuntu Server LTS met SSH ingeschakeld en NGINX geïnstalleerd hebt. De demonstraties in deze tutorial zijn gebaseerd op Ubuntu Server LTS 20.04.1.
DNS-records instellen
Voordat je NGINX subdomeinen of meerdere domeinen kunt hosten, moet je een A-record toevoegen in een DNS beheerpaneel. Het A-record koppelt en verwijst alle domeinen en subdomeinen naar een enkel IP-adres, zodat webbrowsers je website kunnen vinden.
1. Start je favoriete webbrowser en log in op je DNS-beheerpaneel.
2. Klik op Record toevoegen om A-records toe te voegen. Je browser leidt je naar een pagina waar je DNS-instellingen voor je domein en subdomeinen configureert.

Configureer nu de DNS-instellingen als volgt:
Selecteer A record in het veld Type.
Vul @ in bij het veld Host en het IP-adres van je server in bij het veld Waarde.
Selecteer de gewenste waarde in het veld TTL, klik vervolgens op de knop Bevestigen om de instellingen op te slaan.
Herhaal hetzelfde proces voor andere subdomeinen.

De uiteindelijke pagina met DNS-instellingen ziet eruit zoals hieronder.

Je DNS-recordbeheerpaneel kan verschillen in functionaliteit en ontwerp, maar dezelfde principes zijn van toepassing op allemaal.
Webmappen instellen voor NGINX-domein en subdomein
Nu je A-records hebt toegevoegd voor je domein en subdomeinen, is het tijd om hun webmappen in te stellen. NGINX wordt geleverd met een standaard virtueel hostbestand en is geconfigureerd om een webmap te bedienen die zich bevindt op /usr/share/nginx/html.
Maak een aparte webmap aan voor elk domein binnen de standaard document root van NGINX (/var/www/html).
1. Open eerst je terminal en voer de onderstaande commando’s uit om webmappen te maken voor alle domeinen en subdomeinen. Hiermee worden bestanden voor elke website gescheiden, georganiseerd en geïsoleerd.
2. Voer vervolgens het chown
-commando uit om recursief (-R
) de eigenaar van elke map die je in stap één hebt gemaakt te wijzigen naar de gebruiker en groep www-data
. Je wijzigt de eigenaar van elke map naar de gebruiker en groep www-data
, aangezien NGINX draait als een gebruiker www-data
.
3. Maak een bestand met de naam index.html in je favoriete code-editor en kopieer/ plak vervolgens de onderstaande code naar het bestand index.html. Sla het bestand op in de primaire webmap van je domeinen (/var/www/html/awstutorial.net).
De HTML-code hieronder toont een bericht dat zegt “Gefeliciteerd! De awstutorial.net website werkt!” wanneer het bestand index.html wordt geopend in een webbrowser.
4. Maak ten slotte hetzelfde index.html in de mappen /var/www/html/web1.awstutorial.net en /var/www/html/web2.awstutorial.net. Vervang echter awstutorial.net
door web1.awstutorial.net
, en web2.awstutorial.net
in de code van elk index.html overeenkomstig.
Instellen van Virtuele Host voor NGINX Domein en Subdomeinen
Je hebt al een index.html pagina voor je domein en subdomeinen om te serveren via een NGINX-webserver. De volgende stap is het maken van een NGINX virtueel host-configuratiebestand voor elk domein om de HTML-pagina’s te serveren.
1. Maak een NGINX virtueel host configuratiebestand met de naam awstutorial.net aan in uw favoriete code-editor en kopieer/ plak vervolgens de onderstaande code naar dat bestand. Sla het bestand op in de map /etc/nginx/sites-available/.
De onderstaande code beheert het gedrag van uw server, zoals de servernaam en het index (home) pagina wanneer een gebruiker probeert toegang te krijgen tot uw domein.
2. Voer vervolgens de volgende nginx
-opdracht uit om de NGINX-configuratiebestand op syntaxisfouten te controleren (-t
).
Als er geen syntaxisfout wordt gevonden in het NGINX-configuratiebestand, krijgt u de volgende uitvoer.

3. Voer vervolgens de onderstaande opdracht uit om een symbolische koppeling (ln -s
) te maken van de /etc/nginx/sites-available naar de map /etc/nginx/sites-enabled/. Deze opdracht zorgt ervoor dat het configuratiebestand voor de virtuele host awstutorial.net wordt ingeschakeld.
De indeling van sites-available en sites-enabled is standaard in een NGINX-installatie op Ubuntu, maar andere distributies kunnen een andere standaard gebruiken.
4. Herhaal stappen één tot en met drie om NGINX-configuratiebestanden voor virtuele hosts met de namen web1.awstutorial.net en web2.awstutorial.net aan te maken.
Wijzig de volgende regels in elk NGINX-configuratiebestand voor virtuele hosts:
- Vervang de regel
root /var/www/html/awstutorial.net
door de webroot-map van elke subdomein (root /var/www/html/web1.awstutorial.net
enroot /var/www/html/web2.awstutorial.net
). - Vervang de regel
server_name awstutorial.net
door de naam van elke subdomein (server_name web1.awstutorial.net
enserver_name web2.awstutorial.net
).
5. Voer nu de onderstaande sudo ln
opdrachten uit zoals je deed in stap drie om de configuratiebestanden voor de virtuele hosts in te schakelen.
6. Voer de onderstaande systemctl
opdracht uit om de NGINX (restart nginx
) service te herstarten om alle configuratiewijzigingen toe te passen.
7. Navigeer tot slot naar de URL’s van het domein en de subdomeinen in uw browser om te testen of de websites goed werken.
Als het domein en de subdomeinen laden, ziet u een bericht zoals hieronder.

HTTPS instellen op NGINX-domein en subdomein
U heeft met succes een NGINX-domein en subdomeinen op HTTP-protocol ingesteld en getest, wat geweldig is. Maar u moet de verbinding van uw domein en subdomeinen beveiligen door HTTPS in te schakelen. Hoe? Met een certificaat dat u zult krijgen van een Certificate Authority zoals Let’s Encrypt SSL.
1. Voer eerst de onderstaande opdracht uit om het Certbot softwarepakket te installeren (apt-get install certbot
). Certbot stelt u in staat om een SSL-certificaat te downloaden voor uw domein en subdomeinen.
2. Voer vervolgens de certbot
opdracht hieronder uit om een SSL-certificaat (certonly
) voor uw domein (-d awstutorial.net
) te downloaden. Let op dat u akkoord gaat met de algemene voorwaarden (—agree-tos
) met uw e-mailadres (—email
).
Vervang het e-mailadres door uw eigen adres.
3. Typ ‘1’ om de NGINX Web Server-plugin (nginx) te selecteren om te verifiëren bij de ACME CA, zoals hieronder getoond.

Na het selecteren van de NGINX Web Server-plugin ziet u de voortgang van het downloaden van het SSL-certificaat voor uw domein (awstutorial.net).
Standaard worden de SSL-certificaten van Let’s Encrypt opgeslagen in de /etc/letsencrypt/live/ map.

4. Voer nu elke opdracht hieronder uit zoals u deed in stap twee om SSL-certificaten te downloaden voor de overige subdomeinen (web1.awstutorial.net
en web2.awstutorial.net
).
5. Voer tot slot de ls
opdracht hieronder uit om alle SSL-certificaten in de /etc/letsencrypt/live/ map te tonen die (*
) de awstutorial.net
in hun namen bevatten. Op deze manier kunt u verifiëren dat de SSL-certificaten bestaan.
Hieronder ziet u de SSL-certificaten voor uw domein en subdomeinen.

NGINX Virtuele Host Configureren om SSL-certificaten te Gebruiken
Op dit punt heb je al SSL-certificaten tot je beschikking. Maar hoe gebruik je ze om je domein en subdomeinen te beveiligen? Je definieert het pad van de certificaten in het server
-blok van elk NGINX virtueel host configuratiebestand.
1. Open het NGINX virtuele host configuratiebestand van awstutorial.net dat zich bevindt in de map /etc/nginx/sites-available/
in je favoriete code-editor.
2. Vervang de inhoud van het bestand door de onderstaande code, waar je het pad van het SSL-certificaat van je domein en het SSL-protocol definieert (onder Pad van het SSL-certificaat
).
3. Herhaal hetzelfde proces (stappen één tot twee) voor de overgebleven configuratiebestanden van de virtuele hosts (web1.awstutorial.net en web2.awstutorial.net). Maar zorg ervoor dat u het pad naar het SSL-certificaat vervangt door het pad naar het certificaat van uw subdomein (onder Pad van het SSL-certificaat
).
4. Voer nu het systemctl
-commando hieronder opnieuw uit om de NGINX-service opnieuw op te starten om de configuratiewijzigingen toe te passen.
5. Navigeer tot slot naar de URL’s van uw domein en subdomein in uw webbrowser. Maar gebruik deze keer in plaats van het HTTP-protocol HTTPS om te zien of ze werken.
Hieronder ziet u een hangslotsymbool in de adresbalk, wat aangeeft dat de website beveiligd is met uw SSL-certificaat.

Conclusie
In deze tutorial heb je geleerd hoe je een NGINX subdomein of meerdere domeinen kunt bedienen door een configuratiebestand van een virtuele host te configureren. Je hebt ook besproken hoe je je domeinen kunt beveiligen met een SSL-certificaat dat je ook definieert in het configuratiebestand van de virtuele host.
Waarom zou je deze opstelling niet gebruiken in een productieomgeving, zoals het hosten van meerdere apps op een enkele server, en betaalbare webhosting bieden?