Fehler mit IP und Nginx als reverse-proxy
Konfiguriert habe Nginx als einfache reverse-proxy.
Ich bin nur mit der Grundeinstellung
location /{
proxy_pass foo.dnsalias.net;
proxy_pass_header Set-Cookie;
proxy_pass_header P3P;
}
Das problem ist, dass nach einiger Zeit (paar Tage) der Website hinter nginx nicht mehr zugegriffen werden kann. Indead nginx zu nennen versuchen, eine ungültige ip (die Seite hinter nginx ist bei mir zu Hause hinter meiner Kiste und ich bin mit einem dyn-dns, da meine ip nicht fixe). Diese dyn-dns ist immer gültig (kann ich rufen Sie meine Website direkt), aber für die obskuren Grund Nginx stecken mit, dass..
Also wie gesagt, nginx geben Sie mir nur 504 Gateway Time-out nach einiger Zeit. Es sieht aus wie die Fehler kommen, wenn meine ip ändern zu Hause.
Hier ist ein Beispiel von Fehler-log:
[error] ... upstream timed out (110: Connection timed out) while connecting to upstream, client: my.current.ip, server: myreverse.server.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://my.old
.home.ip", host: "myreverse.server.com"
So wissen Sie, warum nginx über ip anstelle des DN ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die
proxy_pass
Wert keine Variablen enthalten, nginx lösen domain-Namen zu IPs beim laden der Konfiguration und Zwischenspeichern, bis du neu starten/neu laden. Dies ist durchaus verständlich, aus performance-Sicht.Aber im Fall von dynamischen DNS-Eintrag zu ändern, dies kann nicht gewünscht sein. Also zwei Optionen sind verfügbar, je nach Lizenz, die Sie besitzen oder nicht.
Kommerzielle version (Nginx+)
Verwenden Sie In diesem Fall einen vorgelagerten block und angeben, welche domain-Namen aufgelöst werden müssen in regelmäßigen Abständen mit einem speziellen resolver. Datensätze TTL überschrieben werden können mit
valid=time
parameter. Dieresolve
parameter derserver
Richtlinie wird erzwungen, dass die DN gelöst werden regelmäßig.Dieses feature wurde Hinzugefügt, in der Nginx+ 1.5.12.
Community-version (Nginx)
In diesem Fall benötigen Sie auch einen benutzerdefinierten Konfliktlöser, wie in der vorherigen Lösung. Aber zur Umgehung der nicht verfügbaren upstream-Lösung, müssen Sie eine variable in Ihrem
proxy_pass
Richtlinie. So nginx verwenden die resolver-zu Ehren der caching-Dauer angegeben, die mit denvalid
parameter. Zum Beispiel können Sie die Verwendung der domain-name als variable :Dann werden Sie wahrscheinlich brauchen Sie ein
proxy_redirect
Richtlinie mit Weiterleitungen umgehen.recv() failed (111: Connection refused) while resolving, resolver: X.X.X.X:53
mit X verschiedenen ip Adresse habe ich versucht.dig foo.dnsalias.net @X.X.X.X
? Sie sollte in dieser Richtlinie eine Liste der DNS, wie Sie in/etc/resolv.conf
.valid
Zeitraum. Also das ist nicht wirklich sinnvoll, unaccept Antworten wie Sie es tun, ohne sogar zu versuchen, herauszufinden, was falsch ist auf dem rest der Plattform.Vielleicht check this out http://forum.nginx.org/read.php?2,215830,215832#msg-215832