Hoe Een Domein En Zijn Subdomeinen Omleiden Met Nginx?

Gepubliceerd 12 juli 2024

Probleem: Domeinen En Subdomeinen Redirecten Met Nginx

Het redirecten van een domein en zijn subdomeinen kan moeilijk zijn, vooral wanneer je Nginx als webserver gebruikt. Dit proces omvat het opzetten van configuraties om al het verkeer van het oorspronkelijke domein en zijn subdomeinen naar de gewenste bestemming te sturen.

Oplossing: Nginx Configureren Voor Domeinredirectie

Het Nginx Server Block Opzetten

Om een domein en zijn subdomeinen te redirecten met Nginx, moet je een server block aanmaken in je Nginx-configuratiebestand. Dit block zal de regels definiëren voor het afhandelen van verzoeken naar je domein.

Open je Nginx-configuratiebestand en voeg een nieuw server block toe:

server {
    # Configuration will go here
}

Definieer de server_name directive om te specificeren welk domein en subdomeinen dit block moet afhandelen. Nginx stelt je in staat om zowel het hoofddomein als alle subdomeinen te matchen met behulp van een puntprefix:

server {
    server_name .mydomain.example;
    # More configuration will follow
}

Deze server_name instelling zal matchen met "mydomain.example" en elk subdomein van "mydomain.example".

De Redirectieregel Implementeren

Nu kun je de redirectieregel toevoegen. Nginx biedt manieren om redirects te implementeren, maar een veel voorkomende methode is het gebruik van de rewrite directive.

Voeg deze regel toe binnen je server block:

server {
    server_name .mydomain.example;
    rewrite ^ http://www.adifferentdomain.example$request_uri? permanent;
}

Deze rewrite regel doet het volgende:

  • Het ^ symbool matcht het begin van de URI.
  • http://www.adifferentdomain.example is het doeldomein voor de redirect.
  • $request_uri vangt de oorspronkelijke request URI op en voegt deze toe aan het nieuwe domein.
  • De ? aan het einde verwijdert eventuele query strings van het oorspronkelijke verzoek.
  • De permanent flag creëert een 301 (permanente) redirect.

Deze configuratie zal alle verzoeken naar "mydomain.example" of een van zijn subdomeinen redirecten naar "www.adifferentdomain.example", waarbij het oorspronkelijke pad behouden blijft en eventuele query strings worden verwijderd.

Door je Nginx-configuratie op deze manier op te zetten, creëer je een redirectiesysteem dat zowel je hoofddomein als al zijn subdomeinen afhandelt.

Tip: Je Nginx-Configuratie Testen

Nadat je wijzigingen hebt aangebracht in je Nginx-configuratie, is het belangrijk om deze te testen voordat je de server opnieuw laadt. Je kunt het volgende commando gebruiken om te controleren op syntaxisfouten:

nginx -t

Als de test succesvol is, kun je vervolgens Nginx opnieuw laden om de wijzigingen toe te passen:

nginx -s reload

Alternatieve Methoden Voor Nginx-Redirectie

De Return Directive Gebruiken

Voor Nginx-versies 0.9.1 en hoger kun je de return directive gebruiken om een eenvoudigere redirectieregel te creëren. Deze methode is duidelijk en efficiënt.

Om dit te implementeren, wijzig je je server block als volgt:

server {
    server_name .mydomain.example;
    return 301 http://www.adifferentdomain.example$request_uri;
}

Deze setup doet hetzelfde als de rewrite methode, maar met een kortere syntaxis. De 301 statuscode geeft een permanente redirect aan, en $request_uri behoudt het oorspronkelijke pad in de nieuwe URL.

Tip: Gebruik HTTPS Voor Veilige Redirects

Bij het opzetten van redirects is het een goede gewoonte om HTTPS te gebruiken in plaats van HTTP voor de doel-URL. Dit verbetert de beveiliging en helpt bij het behouden van SSL/TLS-encryptie. Hier is een voorbeeld:

server {
    server_name .mydomain.example;
    return 301 https://www.adifferentdomain.example$request_uri;
}

Wildcard Subdomein Afhandeling

Om alle subdomeinen af te handelen, inclusief toekomstige, kun je wildcardpatronen gebruiken in je server_name directive. Deze methode maakt nieuwe subdomeinen mogelijk zonder de setup te wijzigen.

Hier is hoe je dit opzet:

server {
    server_name mydomain.example *.mydomain.example;
    return 301 http://www.adifferentdomain.example$request_uri;
}

Deze setup vangt zowel het hoofddomein als elk subdomein op, en redirectt ze allemaal naar het doeldomein. De wildcard (*) matcht elk subdomeinprefix, wat flexibiliteit biedt in je redirectie-setup.