2016-12-16 3 views
0

Ich habe Nginx als Reverse-Proxy konfiguriert. Ghost erhält jedoch immer dieselbe IP 127.0.0.1 von einer Anfrage, die von nginx an ihn weitergeleitet wurde.Wie bekommt der Geist echte IP von Nginx (Reverse-Proxy)?

Wie kann ich Geist machen, um die echte IP von Nginx zu bekommen?

Meine Konfiguration von nginx enthält die folgenden Aussagen

proxy_set_header Host $http_host;  
proxy_set_header X-real-ip $remote_addr; 

Antwort

1

Sie sollten zunächst von Header die IP-Adresse versuchen abrufen:

var ip = req.headers['x-real-ip'] || req.connection.remoteAddress; 

Es wird nicht empfohlen req.connection.remoteAddress direkt außer Kraft zu setzen, da es andere zu verwirren Programmierer, mit denen Sie zusammengearbeitet haben. Aber es ist technisch möglich. Die remoteAddress ist ein Getter, so dass Sie nicht Wert direkt zuweisen können, müssen Sie define your own getter:

req.connection.__defineGetter__('remoteAddress', function() { 
    return req.headers['x-real-ip']; 
}); 
+0

Danke. Jetzt möchte ich den Quellcode von Ghost ändern, damit er überall echte IP verwenden kann. Kann ich direkt req.connection.remoteAddress mit dem Wert von req.headers ['x-real-ip'] an der Stelle signieren, an der das Anfrageobjekt zuerst generiert wird? Auf diese Weise hat req.connection.remoteAddress den Wert einer echten IP und ich muss nur einen Platz im Quellcode ändern. :) –

+0

@Allen Ich aktualisierte die Antwort. –

Verwandte Themen