nginx reverse proxy hat probleme, Upstream DNS zu resolven

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
simonszu
Beiträge: 52
Registriert: 29.02.2012 09:20:06

nginx reverse proxy hat probleme, Upstream DNS zu resolven

Beitrag von simonszu » 01.08.2017 11:38:35

Hi,

ich möchte gerne einen nginx reverse proxy betreiben, der in der proxy_pass direktive einen hostnamen anstelle einer IP stehen hat. Der Hostname kann von dem System, auf dem der Nginx läuft, grundsätzlich aufgelöst werden, da er im DNS-Server, der in diesem System in der /etc/resolv.conf drin steht, aufgelöst werden kann.

Ich habe allerdings das Problem, dass bei einem System-Reboot das DNS noch nicht schnell genug vorhanden ist, und der nginx beim Resolven des Upstream-Hostnamens für diesen Proxy failed, und daher generell nicht startet. Wenn ich mich, sobald nach einem Reboot der SSH-Server läuft, einlogge und den nginx via systemctl manuell neustarte, funktioniert alles. Ich hätte aber gerne, dass nginx von sich aus bei einem Systemreboot komplett starten kann, und möchte daher dieses Bottleneck mit dem DNS irgendwie ausräumen.

Ich habe bereits versucht, im nginx den DNS, der auch in der resolv.conf steht, über die resolver-Direktive mitzugeben, und habe auch den Resolver-Timeout auf 10 Sekunden gesetzt. Ohne Erfolg.
Desweiteren habe ich versucht, den Hostnamen für Upstream in eine Variable zu schreiben, und diese Variable der proxy_pass-Direktive zu übergeben, da dies wohl zumindest im Umfeld von AWS eine Maßnahme ist, dynamische IP-Änderungen zu handeln, da der nginx dann den resolver häufiger queryt, und nicht nur eine IP beim Start abruft und für immer cached. Allerdings auch ohne Erfolg.
Ich habe versucht, die resolver-Direktive im http-Modul und auch mal im server-Modul einzubauen. Das hatte aber keine Auswirkungen auf das tatsächliche Verhalten.

Nun wende ich mich an euch: Es würde ja eigentlich reichen, den Start von nginx soweit zu verzögern, bis das System seine DNS-Möglichkeiten voll geladen hat. Aber wie mache ich das? Normale systemd-Units hätten zB das network.target als Dependency angegeben, aber nginx wird ja noch über den SysV-Init-Kompatibilitätsmodus gestartet. Was mach ich da denn jetzt am besten?

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: nginx reverse proxy hat probleme, Upstream DNS zu resolven

Beitrag von hec_tech » 01.08.2017 13:38:08

Wir arbeiten sehr viel mit nginx als Reverse Proxy sind aber noch nie auf Idee gekommen hier DNS zu verwenden.

Jeder DNS Query dauert und dies verlangsamt alle Seitenzugriffe.

Suche einfach nach Nginx Systemd Unit Files. Also einfach Nginx auf systemd umstellen und dann richtig konfigurieren.

Benutzeravatar
HZB
Beiträge: 486
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: nginx reverse proxy hat probleme, Upstream DNS zu resolven

Beitrag von HZB » 10.08.2017 14:50:26

Code: Alles auswählen

[Unit]
After=systemd-resolved.service
Das System welches Du mit dem Hostnamen ansprichst hat dynamische IPs ? Oder verstehe ich hier etwas nicht ?

simonszu
Beiträge: 52
Registriert: 29.02.2012 09:20:06

Re: nginx reverse proxy hat probleme, Upstream DNS zu resolven

Beitrag von simonszu » 30.08.2017 11:40:27

Nee, keine dynamischen IPs. Aber wenn ich schon einen internen DNS habe, will ich ihn auch nutzen.

Benutzeravatar
HZB
Beiträge: 486
Registriert: 22.10.2003 11:52:15
Wohnort: Wien

Re: nginx reverse proxy hat probleme, Upstream DNS zu resolven

Beitrag von HZB » 30.08.2017 18:18:28

Dann trag die Server /etc/hosts ein. Das sollte sofort verfügbar sein

Antworten