Kivi

没有什么远大理想,只是永远都不会满足而已


  • 首页

  • 关于

  • 标签

  • 归档

如何利用nodejs获取访问者的公网IP

发表于 2015-02-28 更新于 2017-07-02 分类于 Node.js 阅读次数:
本文字数: 1.6k 阅读时长 ≈ 1 分钟

如何利用nodejs获取访问者的公网IP

stackoverflow上面有类似的问题:

1.How can I get the user’s IP address using Node.js?

request.connection.remoteAddress

2.Get local IP address in node.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'use strict';

var os = require('os');
var ifaces = os.networkInterfaces();

Object.keys(ifaces).forEach(function (ifname) {
var alias = 0
;

ifaces[ifname].forEach(function (iface) {
if ('IPv4' !== iface.family || iface.internal !== false) {
// skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
return;
}

if (alias >= 1) {
// this single interface has multiple ipv4 addresses
console.log(ifname + ':' + alias, iface.address);
} else {
// this interface has only one ipv4 adress
console.log(ifname, iface.address);
}
});
});

// en0 192.168.1.101
// eth0 10.0.0.101

3.cnode论坛有这么一个方法

1
2
3
4
5
6
7
8
9
10
exports.getClientIP = function(req){
var ipAddress;
var headers = req.headers;
var forwardedIpsStr = headers[‘x-real-ip’] || headers[‘x-forwarded-for’];
forwardedIpsStr ? ipAddress = forwardedIpsStr : ipAddress = null;
if (!ipAddress) {
ipAddress = req.connection.remoteAddress;
}
return ipAddress;
}

这个方法可以判断你是否使用了nginx和一般情况

4.nodejs获取ip接口的方法

1
os.networkInterfaces()

5.cnode社区管理者自己写的一个模块

没试过,不是很清楚效果怎么样

6.还有一个简单点的

1
2
3
4
var ip = req.headers[‘x-forwarded-for’] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;

7.我在自己的一个项目中采用的是这样的方法:获取主机名

req.hostname(使用express框架)根据主机名来区分项目部署的位置,并没有死盯着怎么去获取IP,有的时候获取ip如果仅仅是为了作区分之类的作用的话,可以换一种思路

# Node.js
配置hexo博客到github
hexo使用注意事项
  • 文章目录
  • 站点概览
kivi

kivi

nodejs | server
58 日志
17 分类
32 标签
RSS
  1. 1. 如何利用nodejs获取访问者的公网IP
    1. 1.1. 1.How can I get the user’s IP address using Node.js?
    2. 1.2. 2.Get local IP address in node.js
    3. 1.3. 3.cnode论坛有这么一个方法
    4. 1.4. 4.nodejs获取ip接口的方法
    5. 1.5. 5.cnode社区管理者自己写的一个模块
    6. 1.6. 6.还有一个简单点的
    7. 1.7. 7.我在自己的一个项目中采用的是这样的方法:获取主机名
© 2019 kivi | 173k | 2:37
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
|