Hoe Nginx te configureren voor meerdere domeinen op hetzelfde IP?

Gepubliceerd 29 augustus 2024

Probleem: Meerdere Domeinen Hosten Op Één IP

Het hosten van meerdere websites met verschillende domeinnamen op één server-IP-adres kan moeilijk zijn. Nginx, een populaire webserver, biedt een oplossing voor dit probleem, maar het vereist de juiste configuratie om meerdere domeinen te beheren.

Oplossing: Correcte Nginx Configuratie Voor Meerdere Domeinen

Server Blocks Instellen

Server blocks in Nginx helpen bij het hosten van meerdere domeinen op één server. Ze laten u verschillende configuraties instellen voor elk domein, inclusief document roots en logging.

Om server blocks te maken voor elk domein, definieert u ze in uw Nginx configuratiebestand. Elk server block begint met de server richtlijn en bevat instellingen voor dat domein.

Tip: Organiseer Uw Configuratie

Houd uw Nginx configuratie overzichtelijk door afzonderlijke bestanden te maken voor elk domein in de /etc/nginx/sites-available/ directory. Maak vervolgens symbolische links naar deze bestanden in de /etc/nginx/sites-enabled/ directory om ze te activeren.

De Listen Richtlijn Configureren

De 'listen' richtlijn in Nginx vertelt de server welk IP-adres en welke poort te gebruiken voor inkomende verbindingen. Bij het instellen van meerdere domeinen, gebruik de 'listen' richtlijn correct.

De juiste manier om de 'listen' richtlijn te gebruiken is door alleen het poortnummer op te geven, gewoonlijk 80 voor HTTP of 443 voor HTTPS. Bijvoorbeeld:

listen 80;

Neem het domein niet op in de 'listen' richtlijn. Dit is onjuist en kan problemen veroorzaken.

De Server_Name Richtlijn Gebruiken

De 'server_name' richtlijn is belangrijk voor domeinrouting in Nginx. Het vertelt Nginx welke domeinnamen te koppelen aan een server block.

Om 'server_name' in te stellen voor elk domein, neem het op in het server block. Bijvoorbeeld:

server_name www.domain1.example domain1.example;

U kunt meerdere domeinnamen toevoegen, met en zonder het 'www' voorvoegsel, om alle versies van uw domeinnaam te dekken.

Example: Wildcard Subdomeinen

Als u alle subdomeinen van een domein wilt matchen, kunt u een wildcard gebruiken in de server_name richtlijn:

server_name *.domain1.example;

Dit zal elk subdomein van domain1.example matchen.

Stap-Voor-Stap Handleiding Om Nginx Te Configureren Voor Meerdere Domeinen

Het Nginx Configuratiebestand Bewerken

Om meerdere domeinen in Nginx in te stellen, lokaliseer en open het hoofd Nginx configuratiebestand. Op de meeste systemen bevindt dit bestand zich op /etc/nginx/nginx.conf. Het is beter om afzonderlijke configuratiebestanden te maken voor elk domein in de /etc/nginx/sites-available/ directory.

Om afzonderlijke server blocks te maken voor elk domein:

  1. Open een nieuw bestand in de sites-available directory:

    sudo nano /etc/nginx/sites-available/domain1.conf
  2. Voeg een server block toe voor uw eerste domein:

    server {
       listen 80;
       server_name domain1.com www.domain1.com;
       # Andere richtlijnen...
    }
  3. Herhaal dit proces voor uw tweede domein in een nieuw bestand:

    sudo nano /etc/nginx/sites-available/domain2.conf
  4. Voeg het server block toe voor het tweede domein:

    server {
       listen 80;
       server_name domain2.com www.domain2.com;
       # Andere richtlijnen...
    }

Tip: Symlink Configuratiebestanden

Nadat u configuratiebestanden in de sites-available directory hebt gemaakt, maak symbolische links om ze in te schakelen:

sudo ln -s /etc/nginx/sites-available/domain1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/domain2.conf /etc/nginx/sites-enabled/

Deze methode stelt u in staat om eenvoudig sites in of uit te schakelen door symlinks te maken of te verwijderen.

Root Directories Instellen

Afzonderlijke root directories voor elk domein houden de bestanden voor verschillende websites gescheiden, wat beheer en beveiliging gemakkelijker maakt.

Om root directories in de configuratie op te geven:

  1. Maak directories voor elk domein:

    sudo mkdir -p /var/www/domain1.com
    sudo mkdir -p /var/www/domain2.com
  2. Voeg in het server block van elk domein de root richtlijn toe:

    server {
       listen 80;
       server_name domain1.com www.domain1.com;
       root /var/www/domain1.com;
       # Andere richtlijnen...
    }

PHP Verwerking Configureren (indien van toepassing)

Als uw websites PHP gebruiken, stel FastCGI in voor PHP verwerking:

  1. Voeg in elk server block een location block toe voor PHP:

    server {
       # Andere richtlijnen...
       location ~ \.php$ {
           fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
           fastcgi_index index.php;
           include fastcgi_params;
       }
    }
  2. Zorg ervoor dat de FastCGI parameters correct zijn voor elk domein. De fastcgi_param richtlijnen moeten verwijzen naar de juiste document root:

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Na het maken van deze wijzigingen, test uw Nginx configuratie en herstart de Nginx service om de wijzigingen toe te passen.