介绍

  • 技术栈:koa2 + mongodb
  • 性能点:获取客户端ip和所在地址;统计用户拜访次数;以及收集浏览器相干信息。
  • 目标:实现性能很少,次要是把我的项目基础架构搭建起来,不便后续扩大。
  • 我的项目地址:https://github.com/Jervis2049...

目录构造

├─app.js  //入口文件├─views   //ejs模板├─static  //动态资源├─service //操作数据库的办法├─routers //路由├─models  //定义接口字段├─db      //mongodb 配置├─package.json //依赖文件

小结

依据ip获取地理位置信息

本我的项目应用了高德地图的接口。先到这里申请key。调用此接口便可获取到数据。

https://restapi.amap.com/v3/ip?ip=${ip}&key=5e91b92a1d8714b64202548a8ec4cee0

获取实在客户端ip

在koa里通过ctx.request.ip便可获取到ip。如果部署了代理服务器的话,比方nginx。那么获取到的往往是nginx所在的ip。咱们要做的是:

1、在nginx.conf的proxy_pass增加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

2、设置代理头字段信赖

//文档:https://koajs.com/#response//Request remote address. Supports X-Forwarded-For when app.proxy is true.const app = new Koa()app.proxy = true;

获取用户的ipv4地址

获取客户端实在ip默认是ipv6格局。如果不指定hostname(0.0.0.0),服务器会承受ipV6的主机拜访(如果可用),也就是说拜访服务器的ip会是::ffff:结尾的,如::ffff:192.168.0.1,否则就是ipv4格局。

//文档:https://nodejs.org/dist/latest-v4.x/docs/api/http.htmlapp.listen(3000, '0.0.0.0' , () => {    console.log('localhost:3000')})

应用pm2守护过程

全局装置pm2

npm i pm2 -g

启动我的项目

pm2 start app.js --watch

关上 http://localhost:3000/index 即可拜访。页面会申请/client/record接口。申请胜利将收集到用户ip和一些浏览器信息。

mongodb的几个罕用简略命令

//连贯本机mongo//查问所有数据库show dbs//查问所有汇合show collections 或者 show tables//查问表内所有数据db.<tableName>.find();//删除table内所有数据db.<tableName>.remove({});//条件查问 (查问ip为123.222.64.88的数据)db.<tableName>.find({'ip':'123.222.64.88'});//查问前5条db.<tableName>.find().limit(5);//含糊查问 (age>22的数据)db.<tableName>.find({"age":{$gt:22}) //删除tabledb.<tableName>.drop();//删除以后数据库db.dropDatabase()//collection删除db.collection.drop()

参考文章:

  • https://www.jianshu.com/p/bca...
  • https://ifttl.com/get-client-...