Logo Vincent
返回文章列表

Node.js-WebServer开发实践:获取公网IP

Node.js
目录

【前言】

在nodejs server开发实践中,在一些场景下需要获取公网ip,

而nodejs中默认的获取ip的方法,只能获取本地的ip,

而无法获取公网ip,本文介绍如何获取公网ip

【服务端获取公网ip】

在服务端获取公网ip比较简单,

nodejs下可以通过下述方法获取,

request.connection.remoteAddress;

但是如果有使用nginx等代理服务器,

上面的方法只能获取到代理的ip,

可以修改nginx配置,如下

location / {
  proxy_pass http://127.0.0.1:9001;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;  # This line.
}

然后通过req.headers获取实际的ip

req.headers["x-real-ip"];

【qiao-z】

qiao-z是一个极简的nodejs web server框架,

https://qiao-z.vincentqiao.com/#/

在qiao-z中可以很方便的获取公网ip

req.ip;

【qiao-get-ip】

封装了一个npm包,qiao-get-ip: https://code.insistime.com/#/qiao-get-ip  

使用也很简单

const { getIP } = require("qiao-get-ip");

const ip = await getIP();

这里会请求下面几个服务器地址,

默认设置200ms超时,返回最快的一个,

获取公网ip

【总结】

1. nodejs服务端获取公网ip的方法

2. 使用qiao-z搭建服务端,通过req.ip获取公网ip, https://qiao-z.vincentqiao.com/#/api/req?id=reqip

3. 使用qiao-get-ip获取公网ip,https://code.insistime.com/#/qiao-get-ip

相关推荐

Node.js-WebServer开发实践:使用PM2-Cluster模式提升接口QPS

【前言】 pm2是nodejs进程管理工具, https://pm2.keymetrics.io/ 介绍详见之前的一篇文章: https://blog.csdn.net/uikoo9/article/details/79018750 , 本文介绍下pm2的cluster模式, 并使用pm2的clus

Node.js-WebServer开发实践:使用autocannon进行接口压测

【前言】 AutoCannon是基于Node.js的接口压测工具, https://www.npmjs.com/package/autocannon 【安装】 【cli使用】 AutoCannon可以通过cli的方式使用, 其中各参数的含义可以直接输入autocannon查看, 例如10个并发连接,

Node.js-开发实践:图片处理

【前言】 使用nodejs的过程中会遇到一些处理图片的场景, 比如上传图片时进行压缩, 或者nodejs开发客户端本处理图片等, 本文介绍下nodejs常见的图片处理操作。 【常见图片处理库】 nodejs常见的图片处理库如下, 可以看到sharp从各方面都遥遥领先 npm包 github地址 gi

Node.js-开发实践:下载文件

【前言】 下载文件是Node.js中最常见的功能, 但实际开发中下载文件也会隐藏各种各样的坑。 【原始代码】 如果在网络搜索Node.js下载文件代码, 大概会搜到类似下面的代码片段, 本文从这里开始,陆续优化下载文件这个功能。 上面的代码片段可以看到: 1.兼容了Node.js原生的http和ht

Node.js-开发实践:使用健壮的FS

【前言】 fs模块是nodejs中最常见的模块, 可是fs的使用经常会有各种意想不到的坑。 【高性能FS】 其中之一是没有使用高性能的fs, 导致在electron应用中造成卡顿, fs模块有3种使用方式, callback方式 1\. 书写会导致回调地狱 2\. 体现nodejs事件驱动,非阻塞i

© 2026 vincentqiao.com . 保留所有权利。