Nginx proxy_pass mit $ remote_addr
Ich versuche zu zählen $remote_addr und $http_remote_addr auf meine proxy_pass ohne Erfolg.
Rewrite-Regel funktioniert
location ^~ /freegeoip/{
rewrite ^ http://freegeoip.net/json/$remote_addr last;
}
Die proxy_pass ohne die $remote_addr funktioniert, aber freegeoip Lesen nicht die x-Real-IP
location ^~ /freegeoip/{
proxy_pass http://freegeoip.net/json/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
Dann, ich bin das hinzufügen der ip an das Ende der Anfrage, wie diese:
location ^~ /freegeoip/{
proxy_pass http://freegeoip.net/json/$remote_addr;
}
aber nginx Bericht dieser Fehler: kein resolver definiert, zu lösen freegeoip.net
InformationsquelleAutor der Frage david.sansay | 2013-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die proxy_pass Anweisung keine Variablen, dann wird es mit dem "gethostbyaddr" system-Aufruf beim start oder reload und cache, der Wert dauerhaft.
ob es irgendwelche Variablen, wie beispielsweise mithilfe der folgenden:
Dann nginx wird mit einem integrierten resolver, und die "resolver" - Richtlinie muss vorhanden sein. "resolver" ist wohl eine falsche Bezeichnung, man denke es sich als "welcher DNS-server wird der eingebaute resolver verwenden". Da nginx 1.1.9 der eingebaute resolver wird zu Ehren von DNS TTL-Werten. Bevor es dann verwendet einen festen Wert von 5 Minuten.
InformationsquelleAutor der Antwort Chris Cogdon
Scheint es ein wenig seltsam, dass nginx nicht beheben, den domain-Namen zur Laufzeit anstatt zur Konfigurations-Zeit (seit der domain-name ist hart codiert). Hinzufügen eines
resolver
Erklärung zu der location-block in der Regel behebt dns-Probleme zur Laufzeit. Also, Ihr Standort-block Aussehen könnte:Diese Lösung basiert auf einen Artikel, den ich lese eine Weile zurück - Proxy-pass und resolver. Wert wäre, gelesen zu werden.
InformationsquelleAutor der Antwort Rob Squires
Könnten Sie auch erwähnen, Ihre nginx
server port
improxy_pass uri
. Dies löste das Problem für mich.InformationsquelleAutor der Antwort RijulB
Wenn jemand trotzdem Probleme auf, bei mir hat das geholfen zu bewegen, die proxy_pass host zu einem separaten upstream, also, ich gehe mit so etwas wie dies
InformationsquelleAutor der Antwort AmazingTurtle