nodejs express獲取不了使用者的外網ip地址解決方法
阿新 • • 發佈:2021-07-12
網上有很多辦法
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