介绍
- 技术栈: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.html
app.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})
// 删除 table
db.<tableName>.drop();
// 删除以后数据库
db.dropDatabase()
//collection 删除
db.collection.drop()
参考文章:
- https://www.jianshu.com/p/bca…
- https://ifttl.com/get-client-…