Hoe Nginx "Duplicate Default Server" Fout Op Te Lossen?

Gepubliceerd 26 juli 2024

Probleem: Duplicate Default Server in Nginx

De "Duplicate Default Server" fout in Nginx treedt op wanneer meerdere server blocks zijn ingesteld als de standaard server voor dezelfde IP-adres en poort combinatie. Dit configuratieprobleem kan ervoor zorgen dat Nginx inconsistent reageert op binnenkomende verzoeken.

Oplossing: Duplicate Default Server Configuraties Verwijderen

De /etc/nginx/sites-enabled Directory Controleren

Om het duplicate default server probleem op te lossen, controleer de /etc/nginx/sites-enabled directory. Deze directory bevat symbolische links naar actieve server block configuraties. Zoek naar bestanden met conflicterende default_server directives.

Om conflicterende configuratiebestanden te vinden, gebruik dit commando:

grep -R "default_server" /etc/nginx/sites-enabled

Dit commando toont alle "default_server" voorkomens in de configuratiebestanden. Bekijk de output om duplicate default_server directives te vinden.

Nadat je de conflicterende bestanden hebt gevonden, verwijder of wijzig de onnodige default server directives. Als je een standaard configuratiebestand hebt dat je niet nodig hebt, verwijder het met:

sudo rm /etc/nginx/sites-enabled/default

Tip: Backup Voor Verwijdering

Voordat je configuratiebestanden verwijdert, maak een backup om te voorkomen dat je belangrijke instellingen verliest. Gebruik dit commando om een backup te maken:

sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak

De Nginx Configuratie Aanpassen

Als je meerdere server blocks moet behouden, wijzig de listen directive in je configuratiebestanden. Zorg ervoor dat slechts één server block de default_server parameter heeft voor elke IP-adres en poort combinatie.

Om een configuratiebestand te wijzigen, gebruik een teksteditor zoals nano:

sudo nano /etc/nginx/sites-enabled/your_config_file

Wijzig de listen directive om de default_server parameter te verwijderen of toe te voegen indien nodig. Bijvoorbeeld:

listen 80;  # Verwijder default_server als het niet nodig is

Of, als je wilt dat dit server block de standaard is:

listen 80 default_server;

Onthoud, gebruik de default_server parameter slechts één keer per IP:poort combinatie in al je configuratiebestanden.

Na het maken van deze wijzigingen, sla het bestand op en sluit de teksteditor af. Herhaal dit proces voor andere configuratiebestanden die wijzigingen nodig hebben.

De Oplossing Verifiëren

Nginx Herstarten

Na het wijzigen van je Nginx configuratie, test en herstart de service om de wijzigingen toe te passen. Gebruik dit commando om te controleren of je configuratie geldig is:

sudo nginx -t

Dit commando test de Nginx configuratiebestanden op syntaxfouten. Als de test slaagt, zie je een bericht dat bevestigt dat de configuratietest succesvol is.

Als de test slaagt, herstart de Nginx service om de wijzigingen toe te passen:

sudo systemctl restart nginx

Voor systemen die geen systemd gebruiken, gebruik:

sudo service nginx restart

Tip: Graceful Restart

Om Nginx te herstarten zonder actieve verbindingen te onderbreken, gebruik het volgende commando:

sudo systemctl reload nginx

Deze methode herlaadt de configuratie zonder verbindingen te verbreken.

Error Logs Monitoren

Na het herstarten van Nginx, controleer de error logs om te bevestigen dat de duplicate default server fout verdwenen is. Toegang tot de Nginx error log met dit commando:

sudo tail -f /var/log/nginx/error.log

Dit commando toont de laatste entries in de error log in real-time. Zoek naar nieuwe voorkomens van de duplicate default server fout.

Om te controleren of je server correct werkt, probeer je website te openen via een webbrowser. Als de site zonder problemen laadt, is het een goed teken dat de configuratie goed werkt.

Je kunt ook dit commando gebruiken om te controleren of Nginx draait zonder fouten:

sudo systemctl status nginx

Dit commando toont de huidige status van de Nginx service, inclusief recente foutmeldingen of waarschuwingen.

Als je geen fouten ziet gerelateerd aan duplicate default servers en je website is toegankelijk, heb je het probleem opgelost.