1. 程式人生 > 其它 >nodejs express獲取不了使用者的外網ip地址解決方法

nodejs express獲取不了使用者的外網ip地址解決方法

網上有很多辦法

function getClientIp(req) {
        return req.headers['x-forwarded-for'] ||
        req.connection.remoteAddress ||
        req.socket.remoteAddress ||
        req.connection.socket.remoteAddress;
}

還有就是使用os這個庫(但是這個只是獲取自己本機的本地的外網地址和內網地址啊)。。
圍繞以上的資料,試驗了無數次,就是不行,獲取出來的只是::ffff:127.0.0.1

耐心都一點一點的被磨光了,還好皇天不負有心人,終於被我找到答案。

那麼怎麼解決呢?(重點來了。。)

其實最前面的那兩點也不是不對,只是有個前提,那就是你需要先設定一下你的代理伺服器才可以。本人的伺服器是使用nginx做代理,由於nginx反向代理的問題,所以導致獲取出來的都是::ffff:127.0.0.1,(其他代理伺服器沒試過,所以不清楚有沒有這個問題)。

下面是設定nginx的方法:

location / {
                proxy_pass   http://localhost:3000;
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;
	}

設定完重啟伺服器,再次訪問應該就能拿到訪問者的ip地址了。拿不到我也沒辦法了,哈哈。
cd /usr/local/nginx/bin
./nginx -s reload