回覆列表
-
1 # 夢星辰203
-
2 # 廖亮
臣妾做不到
不僅是Nodejs做不到,任何網路技術都不能做到
因為訪問者的內網ip,在經過路由器的時候會做 網路地址轉換(NAT),經過轉換的IP已經是公網IP了,所以只能獲取到訪問者公網的IP.
Nodejs獲取客戶端公網IP的方法主要分為這幾種情況:
Nodejs直接暴露服務proxy_set_header X-Real-IP $remote_addr
在Nodejs可以使用X-Real-IP頭獲取IP
在多層反向代理中需要除了暴露在公網的nginx設定x-real-ip頭,其他後面都不要設定
exports.getClientIP = function(req){
var ip = "";
var headers = req.headers;
var ipStr = headers[‘x-real-ip’] || headers[‘x-forwarded-for’];
ipStr ? ip = ipStr : ip = "";
if (!ip) {
ip = req.connection.remoteAddress;
}
return ip;
}
這個方法一般情況可以獲取到