2016-12-16 85 views
0

我已將nginx配置爲反向代理。但是,ghost總是從nginx轉發給它的請求獲得相同的ip 127.0.0.1。ghost如何從nginx(反向代理)獲得真實IP?

如何讓ghost從nginx獲得真正的IP?

我的nginx的配置包括以下語句

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

回答

1

你應該嘗試從頭部首先檢索IP地址:

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

不建議重寫req.connection.remoteAddress直接,因爲它會混淆其他你與之合作的程序員。但它在技術上是可行的。該remoteAddress是一個getter,所以你不能直接賦值給它,你需要define your own getter

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

謝謝。現在我想修改ghost的源代碼讓它在所有地方使用真正的IP。我可以直接在請求對象第一次生成的地方用req.headers ['x-real-ip']的值對req.connection.remoteAddress簽名嗎?通過這種方式,req.connection.remoteAddress具有真實IP的值,我只能在源代碼中只更改一個地方。 :) –

+0

@艾倫我更新了答案。 –