Linuxspicker

Admins kleiner Zettelkasten für die Lösung von Linuxproblemen

Nginx: "send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53"

Kürzlich durch Zufall in der error.log von nginx über send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53 gestolpert. Der Fehler könnte für einige längere Wartezeiten beim Webserver verantwortlich gewesen sein. Die Lösung für das Problem war allerdings recht einfach.

Ursache war ein alter Eintrag für die DNS-Auflösung in der nginx.conf. Der eigene Nameserver war vor geraumer Zeit der Einfachheit halber durch das Cachesystem von systemd-resolved ersetzt worden, daher antwortet natürlich niemand mehr unter der Adresse 127.0.0.1:53.

In der nginx.conf muss hierfür nur der Eintrag für resolver angepasst werden. Statt vorher resolver 127.0.0.53 127.0.0.1 8.8.8.8 8.8.4.4 valid=3600s; resolver_timeout 1s; steht dort nun ausschließlich das:

resolver 127.0.0.53 valid=3600s;
resolver_timeout 1s;

Das heißt, das Namensauflösungen ausschließlich über systemd-resolved laufen und für eine Stunde im Cache gespeichert werden. Als Timeout ist statt der standardmäßigen 30 Sekunden eine Sekunde gesetzt. Da die Abfragen per zufälligem round-robin-Verfahren unter mehreren angegebenen Servern aufgeteilt werden, wurden die Google-Server unter Vertrauen auf die ständige Erreichbarkeit von systemd-resolved rausgenommen. Bei systemd-resolved sind eh mehrere DNS-Server zur Sicherheit angegeben.


Stichworte: , ,
Kategorien:


Kommentare

Keine Kommentare

Kommentare

Geben Sie Ihren Kommentar hier ein. * Eingabe erforderlich. Sie müssen die Vorschau vor dem Absenden ansehen.