当前位置: 首页 > news >正文

nodejs 获取客服端ip,以及获取ip一直都是127.0.0.1的问题

一、问题描述

在做登录日志的时候想要获取客户端的ip, 网上查了一下 通过  req.headers['x-forwarded-for'] || req.connection.remoteAddress;  获取, 结果获取了之后不管是开发环境,还是生产环境获取到的一直都是 127.0.0.1,这是因为在配置Nginx的时候配置了如下框传来的内容, 这样Nginx默认将自己的地址设置为客户端的地址。

二、解决办法

给Nginx配置加上  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 这样才能用 req.headers['x-forwarded-for'] || req.connection.remoteAddress; 获取到真实 ip 如下图

三、附上我的获取的代码

关键如下:

try {let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || 'Unknown';if (ip.includes(':')) {ip = ip.includes(':') ? ip.split(':').slice(-1)[0] : ip;}const city = new IP2Region().search(ip) ? new IP2Region().search(ip).city + new IP2Region().search(ip).isp : '';const os = getOS(req.headers['user-agent']);const browser = req.headers['user-agent'].split(' ')[0];const sql = `INSERT INTO logs (username, ip, city, browser, os, create_time) VALUES (?,?,?,?,?,?)`;const params = [user.username, ip, city, browser, os, moment().format('YYYY-MM-DD HH:mm:ss')];db.queryAsync(sql, params).then(_ => {res.send({code: 200,msg: '登录成功',token});});
} catch (error) {console.log('-------- logs error --------', error);res.send({code: 200,msg: error,token});

http://www.lryc.cn/news/392773.html

相关文章:

  • 微软与OpenAI/谷歌与三星的AI交易受欧盟重点关注
  • 微信小程序毕业设计-学生实习与就业管理系统项目开发实战(附源码+论文)
  • spring boot 接口参数解密和返回值加密
  • C语言自定义类型——联合体、枚举
  • 【trition-server】pytorch 文档:使用 Triton 提供 Torch-TensorRT 模型
  • wps 表格如何实现vlookup高级模糊搜索
  • 第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅
  • 【C++题解】1561. 买木头
  • 解决android native包webview,webview中的请求blocked by CORS policy
  • 链篦机回转窑球团生产工艺
  • 查看电脑ip地址快捷键是什么?是哪个
  • 面试专区|【54道Spring Cloud高频题整理(附答案背诵版)】
  • Shopee(虾皮)怎么获取流量?
  • Java启动虚拟机默认字符集编码
  • 【单片机编程模式】状态机编程
  • IPSS模块怎么安装到VOS服务器的,到底有没有效果,是不是能大幅度提升VOS3000安全性呢
  • C++ STL容器:序列式容器-堆pirority_queue
  • ECharts在最新版本中使用getInstanceByDom报错处理
  • 利用C语言实现三子棋游戏
  • 大学教师门诊预约小程序-计算机毕业设计源码73068
  • Python PyCryptodome库介绍与实例
  • 《框架封装者 · 自定义初始化事件》
  • ActiViz实战:使用vtkImageClip和vtkImageActor根据滑动条来显示当前图像数据切面
  • 【论文笔记】BEVCar: Camera-Radar Fusion for BEV Map and Object Segmentation
  • 圆通寄15kg30kg一般多少钱?寄大件物品怎么寄最便宜?
  • transformer初探
  • JUC并发编程基础(包含线程概念,状态等具体实现)
  • 集中管理和分析日志:使用 ELK 套件构建强大的日志管理平台
  • 深度学习 - 模型的保存与部署方式汇总
  • 人工智能对网络安全有何影响?