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: Dns, Nginx, Systemd-resolved
Kategorien: Linux
Kommentare
Keine Kommentare
Kommentare