GeoIP2

MAXMIND的产品。介绍:MaxMind GeoIP2 offerings provide IP geolocation and proxy detection for a wide range of applications including content customization, advertising, digital rights management, compliance, fraud detection, and security.

详情见官网:

https://www.maxmind.com/en/geoip2-services-and-databases

MacOS使用GeoIP2库

1、下载编译安装GeoIP2支持库https://github.com/maxmind/libmaxminddb/releases,安装完成后系统增加一个mmdblookup命令,

2、解压后编译安装。

3、下载免费的最新ip库:https://www.maxmind.com/en/accounts/744402/geoip/downloads

4、指定对应的库查询:mmdblookup -f GeoLite2-City_20220719/GeoLite2-City.mmdb -i  23.25.33.66

搭建OpenResty查询指定IP

以下是无脑执行步骤,详细解释和步骤参考:https://codeantenna.com/a/LHGNCRUsvq

OpenResty安装

OpenResty - OpenResty® Linux Packages安装详细步骤

1、wget https://openresty.org/package/centos/openresty.repo

2、sudo mv openresty.repo /etc/yum.repos.d/

3、sudo yum check-update

4、sudo yum install openresty -y

5、sudo yum install openresty-resty -y

6、sudo yum install openresty-opm openresty-doc -y

GeoIP2库下载和GeoIP2 lua库安装

1、下载免费的最新ip库:https://www.maxmind.com/en/accounts/744402/geoip/downloads

2、解压后,mmdb库放到/usr/local/openresty/,这里把两个库都放进来:GeoLite2-City.mmdb和GeoLite2-Country.mmdb。

3、安装lua库:/usr/local/openresty/bin/opm get anjia0532/lua-resty-maxminddb

4、GeoIP2 lua库依赖动态库安装:https://codeantenna.com/a/LHGNCRUsvq

5、让openresty加载到(提示访问不到需要):sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf"

6、ldconfig

openresty nginx配置

1、vim /usr/local/openresty/nginx/conf/nginx.conf

2、http段添加:

lua_package_path "/usr/local/openresty/lualib/?.lua;;"; lua_package_cpath "/usr/local/openresty/lualib/?.so;;";

3、server段添加:

location /lua { default_type "text/html"; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #return 200 $proxy_add_x_forwarded_for; charset utf-8; #关闭代码缓存 。修改lua脚本不需要重启 lua_code_cache off; content_by_lua_file /usr/local/openresty/lualib/project/test.lua; }

访问mmdb的lua脚本

1、mkdir /usr/local/openresty/lualib/project

2、vim test.lua

3、

local cjson=require 'cjson'
local geo=require 'resty.maxminddb'
local arg_ip=ngx.var.arg_ip
--local arg_node=ngx.var.arg_node
--ngx.say("IP:",arg_ip,", node:",arg_node,"<br>")--没有传递ip
if not arg_ip thenarg_ip=ngx.var.remote_addr
endif not geo.initted() thengeo.init("/usr/local/openresty/GeoLite2-City.mmdb")
end--当前服务部署的ip
--ngx.say("当前服务部署ip:",ngx.var.remote_addr)local res,err=geo.lookup(arg_ip or ngx.var.remote_addr)if not res thenngx.say("获取客户端ip失败,或当前请求的ip不是公网ip")ngx.log(ngx.ERR,' failed to lookup by ip , reason :',err)
elsefor k,v in pairs(res) do--只获取国家if(k == "country") then--获取国家编码for key,item in pairs(v) doif (key=="iso_code") then--ngx.say(item)endendendend--ngx.say("Result:",cjson.encode(res))ngx.say(cjson.encode(res))if arg_node thenngx.say("node name:",ngx.var.arg_node, " , value:",cjson.encode(res[ngx.var.arg_node] or {}))endendngx.exit(200)

浏览器或者Postman访问

扩展:Nginx或Nginx Plus使用GeoIP2做访问控制

可以使用nginx做对不同国家的ip访问控制。这里使用nginx plus(闲的无聊碰到)。

实际上Nginx Plus是Nginx的商业版本,以下是详细对比项。

https://www.nginx.com/blog/whats-difference-nginx-foss-nginx-plus/

Compare Models - NGINX

因为是商用,这里安装Nginx Plus之前需要获取试用:https://my.f5.com/manage/s/trials,通过后会有公钥和私钥。 测试CentOS8,所有详细步骤都在:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus/#installing-nginx-plus-on-rhel-81-and-oracle-linux-81

几个关键步骤:

1、获取试用

 2、vim /etc/yum.repos.d/nginx-plus-8.repo,改成对应的公钥私钥地址。

MacOS使用GeoIP2库查询ip详细信息相关推荐

  1. ip地址异常判定python_python检测异常ip,并查询ip详细信息

    #!/usr/local/bin/python3 # coding:utf-8 import string, subprocess, send_mail from time import strfti ...

  2. mysql ip 查询工具_IP地址查询定位器 - 从全球最新的IP数据库查询IP详细信息

    ‣ 国民输入法,6亿用户输入首选‣ App Store 年度最佳应用‣ 蝉联免费榜冠军12天====== 炫酷功能 ======‣ 卓越拼音语音手写笔画文字扫描跨屏输入‣ 词库强大.本地深度学习模型. ...

  3. php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法

    [导读]这篇文章主要介绍了PHP基于新浪IP库获取IP详细地址的方法,涉及php正则.curl及编码转换相关操作技巧 本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法.代码如下<?php ...

  4. Vin码查询车辆详细信息

    本文仅供学习交流使用,如侵立删!demo下载见文末 Vin码查询车辆详细信息 www.y-jiema.com 根据VIN码查询车辆详细信息 事例VIN码:LGWEF4A52EF204381 车型数据库 ...

  5. 通过Ip纯真库获取地址详细信息

    通过IpLocatoin.php(ip处理类) 及qqwry.dat(IP纯真),完整获取ip对应的详细地址 Tp5.1通过ip获取地址 public function getAddress(){$i ...

  6. Java调用MaxMind GeoIP库查询IP地理信息

    1. 概述 GeoIP 有收费版本 GeoIP2 和 GeoLite2 ,GeoLite2 为免费版本. 2. 安装GeoLite2数据库文件 下载RPM包安装 # centos版本 wget htt ...

  7. C# 有道API翻译 查询单词详细信息

    有道云官方文档 有道云翻译API简介:http://ai.youdao.com/docs/doc-trans-api.s#p01 有道云C#Demo : http://ai.youdao.com/do ...

  8. MySQL查询字段详细信息

    问题 我们都知道在建表的时候定义字段列名.数据类型.长度等信息,但是却无法保存复制,那么如何查出所有字段信息并且可以复制呢? 首先,数据库里面有个叫INFORMATION_SCHEMA的数据库,里面提 ...

  9. 淘宝商品详情接口,淘宝详情页接口,宝贝详情页接口,商品属性接口,商品信息查询,商品详细信息接口,h5详情,淘宝APP详情

    一.接口参数说明: 提取淘宝商品详情页各项数据,包含skuid.价格.收藏数.加购数.月销售量.主图.标题.详情页图片,点击获取请求key和secret 二.建议使用场景 1.商品销售情况分析,根据销 ...

  10. 拼多多商品详情接口,拼多多详情页接口,宝贝详情页接口,商品属性接口,商品信息查询,商品详细信息接口,h5详情,拼多多APP详情

    一.接口参数说明: 提取拼多多商品详情页各项数据,包含skuid.价格.收藏数.加购数.月销售量.主图.标题.详情页图片等参数,接口对接希望能够帮助到有需要的朋友,具体参数对接如下: 1.公共参数 名 ...

最新文章

  1. 自动化配置和部署工具--puppet(1)--什么是puppet
  2. jdk1.8hashmap为什么对hash进行了一次扰动处理
  3. oracle分区list,Oracle 分区表中存在range-list表分区时遇到问题及解决办法
  4. HashMap的hash冲突解决方案
  5. 爬取许嵩新歌《雨幕》弹幕,告诉你什么才是真正的创作!
  6. 【SpringBoot】添加自定义浏览器图标 favicon.ico
  7. html展示pdf文件流,使用pdfjs提供的viewer.html展示pdf文件流
  8. 新来的领导把我的职务免掉了,一年后,我要不要找领导聊聊?
  9. redis各种数据结构在项目中的应用场景
  10. Python之package、module
  11. iOS 上的相机捕捉 swift
  12. OpenCasCade中一个V3d_Viewer对应多个示例窗口V3d_View
  13. 相见恨晚的英语学习方法!百万人读过!
  14. JavaScript高级程序设计闭包学习理解
  15. 湖北省2021年高考成绩查询日期,湖北2021年高考查分及志愿填报时间公布!
  16. 同花顺面经(二面挂)
  17. 学习SQLServer: 设置QUOTED_IDENTIFIER
  18. 《算法与数据结构》实验指导书
  19. 四十七、使用bootstrap中的选项卡制作产品特色页面
  20. 随笔7:R语言绘图黑白印刷风格芯片包

热门文章

  1. Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例nib Group 保险公司
  2. 计算机视觉(三)线性分类器
  3. PCB设计流程一原理图
  4. 大规模MIMO多用户系统中的导频调度和预编码方法
  5. u盘被写保护怎么解除,如何去掉u盘写保护?
  6. 低碳节能智慧路灯杆解决方案
  7. java扫雷游戏课程设计素材_练习:仿Windows扫雷游戏
  8. Unity WebGL基于js通信实现网页录音
  9. tcflush()用法 以及 Termios 介绍
  10. IQtree:使用 SNP 数据构建 有根 系统发育树及踩坑