为 ngx_http_ipip_module 设置 nginx 配置如下:
http {
ipip_ip_datx /xx/real_ip.datx;
ipip_phone_txt /xx/real_phone.txt;
server {
listen 1999;
location / {
ipip on;
}
}
}
现在你可以得到如下的 ip 信息:
[root@localhost ~]# curl "http://127.0.0.1:1999/ip?ip=8.8.8.8"
{
"ret": "ok",
"data": ["GOOGLE", "GOOGLE", "", "google.com", "level3.com", "", "", "", "", "", "", "*", "*"]
}
或者您可以通过以下方式获取电话信息:
[root@localhost ~]# curl "http://127.0.0.1:1999/phone?phone=13000000101"
{
"ret": "ok",
"data": ["北京", "北京", "中国联通网络"]
}
根据 https://www.ipip.net/ 的 check-version api ,我们可以自动检查 ip 和手机版本。我们建议使用 crontab 来自动更新,如下所示:
1 3 * * * xx flock -n /xx/ipip.lock /path/to/ngx_http_ipip_module/scripts/autoupdate.sh &> /data/logs/ipinfo.log
顺便说一下,您必须将作为ipip上令牌的私有数据设置为 scripts/var 文件,如下所示:
export IPTOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaa
export PHONETOKEN=bbbbbbbbbbbbbbbbbbbbbbbbbbbb
export PATH=/opt/nginx/sbin:$PATH
您也可以重写 autoupdate.sh 以适合自己。并且 fake_ip.datx 和 fake_phone.txt 是为了运行测试的假文件(建议我们从 ipip 购买服务以获取真实文件)。
ngx_http_ipip_module 需要以下内容才能运行:
设置 ip datx 文件
http {
ipip_ip_datx /xx/real_ip.datx;
}
设置手机 txt 文件
http {
ipip_phone_txt /xx/real_phone.txt;
}
启用 ngx_http_ipip_module
location / {
ipip on;
}
项目地址:https://github.com/youzan/ngx_http_ipip_module