目錄結構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()
參考文章:數據庫