之前用的node版本是0.10.32
1.本机访问,拿到的ip是127.0.0.1;
2.别的机器方式,拿到的ip就是别的机器的ip,假如我部署在局域网内,内网访问拿到的ip格式如下:192.168.1.xxx。
后来我node版本切到4.4.3的时候,出现了问题
1.本机访问,拿到的IP是 ::1
2.别的机器访问,拿到的ip是::ffff:192.168.0.2
这什么原因呢?代码如下:
function getClientIp (req) {
var ipAddress;
var forwardIpStr = req.headers['x-forwarded-for'];
if (forwardIpStr) {
var forwardIp = forwardIpStr.split(',');
ipAddress = forwardIp[0];
}
if (!ipAddress) {
ipAddress = req.connection.remoteAdress;
}
if (!ipAddress) {
ipAddress = req.socket.remoteAdress;
}
if (!ipAddress) {
if (req.connection.socket) {
ipAddress = req.connection.socket.remoteAdress;
}
else if (req.headers['remote_addr']) {
ipAddress = req.headers['remote_addr'];
}
else if (req.headers['client_ip']) {
ipAddress = req.headers['client_ip'];
}
else {
ipAddress = req.ip;
}
}
return ipAddress;
};