目录结构html
├─app.js //入口文件 ├─views //ejs模板 ├─static //静态资源 ├─service //操做数据库的方法 ├─routers //路由 ├─models //定义接口字段 ├─db //mongodb 配置 ├─package.json //依赖文件
本项目使用了高德地图的接口。先到这里申请key。调用此接口即可获取到数据。node
https://restapi.amap.com/v3/ip?ip=${ip}&key=5e91b92a1d8714b64202548a8ec4cee0
在koa里经过ctx.request.ip
即可获取到ip。若是部署了代理服务器的话,好比nginx。那么获取到的每每是nginx所在的ip。咱们要作的是:nginx
一、在nginx.conf的proxy_pass添加 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
git
二、设置代理头字段信任github
//文档:https://koajs.com/#response //Request remote address. Supports X-Forwarded-For when app.proxy is true. const app = new Koa() app.proxy = true;
获取客户端真实ip默认是ipv6格式。若是不指定hostname(0.0.0.0),服务器会接受ipV6的主机访问(若是可用),也就是说访问服务器的ip会是::ffff:开头的,如::ffff:192.168.0.1
,不然就是ipv4格式。web
//文档:https://nodejs.org/dist/latest-v4.x/docs/api/http.html app.listen(3000, '0.0.0.0' , () => { console.log('localhost:3000') })
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()
参考文章:数据库