根据ip地址获得所在地区名称,如:中国|0|北京|北京市|联通。本地化部署,本地数据库,无外网请求。
仓库地址:https://gitee.com/jet-long/ip2region.git
git clone https://gitee.com/jet-long/ip2region.git
cd ip2region
composer install
# windows系统下启动webman服务
php .\windows.php
# linux系统下启动webman服务(加 -d是后台运行)
php webman start -d
# 打包为二进制文件(打包后在build目录下)
php -d phar.readonly=0 ./webman build:bin
# 指定打包的php版本
php -d phar.readonly=0 ./webman build:bin 8.1
2.【推荐】直接下载压缩包运行二进制文件(此二进制文件为webman自带功能打包,打包后的文件目前只支持运行在x86_64架构的linux系统上,不支持windows和mac系统)
1、下载最新的发行版(https://gitee.com/jet-long/ip2region/releases/tag/v1.0.0)
2、解压文件包
3、给程序文件增加可执行权限
4、启动程序:./ip2region start -d
3.此程序开放了一个api地址,传入具体ip地址,返回对应的json格式数据
// 请求地址
http://localhost:9501/ip2region?ip=111.203.145.123
// 返回数据示例:
{
"code": 1,
"data": {
"ip": "111.203.145.123",
"region": "中国|0|北京|北京市|联通",
"gap": 0.023193359375
},
"msg": "success",
"time": 1735889117
}
4.nginx添加站点配置域名,并转发到webman服务
server {
listen 80;
server_name www.test.com;
index index.php index.html index.htm;
root /path/to/ip2region/public;
# 将请求转发到webman
location ^~ / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
if (!-f $request_filename){
proxy_pass http://127.0.0.1:8703;
}
}
# 拒绝访问所有以 .php 结尾的文件
location ~ \.php$ {
return 404;
}
# 允许访问 .well-known 目录
location ~ ^/\.well-known/ {
allow all;
}
# 拒绝访问所有以 . 开头的文件或目录
location ~ /\. {
return 404;
}
}
此项目用于有根据ip获取地区名称需求的项目,现在高德地图接口需要收费,这个开源数据库获取有一点点不太准确,但是简单的需求还是可以用。
有需要的朋友直接拿去用,已开源。
我都是直接把这个打包到项目里。。。没想过分开部署。多一个步骤。。。
打包到项目里是可以的,分开部署方便其他多个项目直接通过api调用。 有的项目以前使用了高德api的,可以替换为此系统api再改下返回数据的获取。
感谢分享
不客气
不支持 ipv6 差评
你看这个这个扩展,是基于这个开发的,可以拉代码支持下 ipv6,扩展来源:https://gitee.com/lionsoul/ip2region
我看有问什么时候支持 ipv6,目前来看,是不支持的
感谢分享
https://www.ip2location.com/development-libraries/ip2location/php 这个扩展挺好的
牛!