mirror of https://github.com/dnomd343/echoIP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
3.9 KiB
183 lines
3.9 KiB
4 years ago
|
# echoIP
|
||
|
|
||
|
> 显示客户端IP、查询IP详细信息
|
||
|
|
||
|
结合 [ipinfo.io](https://ipinfo.io/)、[IPIP.net](https://www.ipip.net/)、[纯真IP](http://www.cz88.net/) 的数据计算指定IP信息,支持IPv4与IPv6地址。
|
||
|
|
||
|
客户端可直接向服务器询问自己的IP地址,同时可指定任意IP地址获取其详细信息。
|
||
|
|
||
|
## 使用方法
|
||
|
|
||
|
### 命令行模式
|
||
|
|
||
|
```
|
||
|
# 查询自己的IP
|
||
|
shell> curl ip.343.re
|
||
|
···
|
||
|
|
||
|
# 查询自己IP的详细信息
|
||
|
shell> curl ip.343.re/info
|
||
|
···
|
||
|
|
||
|
# 查询指定IP地址详细信息
|
||
|
shell> curl ip.343.re/8.8.8.8
|
||
|
···
|
||
|
```
|
||
|
|
||
|
![echoIP-cli](https://pic.dnomd343.top/images/aDE.png)
|
||
|
|
||
|
### 网页访问模式
|
||
|
|
||
|
你可以直接在 [ip.343.re](https://ip.343.re/) 进行查询,或者将项目部署到自己的服务器上。
|
||
|
|
||
|
![echoIP-web](https://pic.dnomd343.top/images/k2H.png)
|
||
|
|
||
|
## 如何部署
|
||
|
|
||
|
### 常规方式
|
||
|
|
||
|
首先拉取仓库到你的服务器上,这里以 `/var/www/echoIP` 为例
|
||
|
|
||
|
```
|
||
|
shell> cd /var/www
|
||
|
shell> git clone https://github.com/dnomd343/echoIP.git
|
||
|
Cloning into 'echoIP'...
|
||
|
···
|
||
|
Unpacking objects: 100% ··· done.
|
||
|
```
|
||
|
|
||
|
确定你的服务器上有PHP环境,同时有 `curl` 与 `wget` 工具
|
||
|
|
||
|
```
|
||
|
shell> php -v
|
||
|
···PHP版本信息···
|
||
|
|
||
|
shell> curl --version
|
||
|
···curl版本信息···
|
||
|
|
||
|
shell> wget --version
|
||
|
···wget版本信息···
|
||
|
```
|
||
|
|
||
|
配置网页服务器代理,这里以Nginx为例
|
||
|
|
||
|
```
|
||
|
# 进入nginx配置目录
|
||
|
shell> cd /etc/nginx/conf.d
|
||
|
shell> vim ip.conf
|
||
|
···
|
||
|
shell> vim ip.func
|
||
|
···
|
||
|
```
|
||
|
|
||
|
写入配置文件
|
||
|
|
||
|
`/etc/nginx/conf.d/ip.conf`
|
||
|
|
||
|
```
|
||
|
server {
|
||
|
listen 80;
|
||
|
server_name ip.343.re; # 改为自己的域名
|
||
|
include conf.d/ip.func;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 443 ssl http2;
|
||
|
server_name ip.343.re; # 改为自己的域名
|
||
|
ssl_certificate /etc/ssl/certs/343.re/fullchain.pem; # 改为自己的证书
|
||
|
ssl_certificate_key /etc/ssl/certs/343.re/privkey.pem;
|
||
|
include conf.d/ip.func;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
`/etc/nginx/conf.d/ip.func`
|
||
|
|
||
|
```
|
||
|
root /var/www/echoIP;
|
||
|
|
||
|
location = / {
|
||
|
if ($http_user_agent ~* (curl|wget)) {
|
||
|
return 200 $remote_addr\n;
|
||
|
}
|
||
|
if ($scheme = http) {
|
||
|
return 301 https://$server_name;
|
||
|
}
|
||
|
index index.html;
|
||
|
}
|
||
|
|
||
|
location = /ua {
|
||
|
if ($http_user_agent ~* (curl|wget)) {
|
||
|
return 200 $http_user_agent\n;
|
||
|
}
|
||
|
default_type application/json;
|
||
|
return 200 $http_user_agent;
|
||
|
}
|
||
|
|
||
|
location = /ip {
|
||
|
if ($http_user_agent ~* (curl|wget)) {
|
||
|
return 200 $remote_addr\n;
|
||
|
}
|
||
|
if ($scheme = http) {
|
||
|
return 301 https://$server_name/ip;
|
||
|
}
|
||
|
return 200 $remote_addr;
|
||
|
}
|
||
|
|
||
|
location ~* ^/([^/]+?)$ {
|
||
|
set $request_ip $1;
|
||
|
if ($http_user_agent ~* (curl|wget)) {
|
||
|
proxy_pass https://ip.343.re/info/$request_ip; # 改成自己的域名
|
||
|
break;
|
||
|
}
|
||
|
if ($scheme = http) {
|
||
|
return 301 https://$server_name$request_uri;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
location ^~ /info {
|
||
|
set $is_cli 0;
|
||
|
set $is_https 0;
|
||
|
set $is_legal 0;
|
||
|
if ($uri ~* ^/info/?$) {
|
||
|
set $is_legal 1;
|
||
|
set $query ip=$remote_addr;
|
||
|
}
|
||
|
if ($uri ~* ^/info/([^/]+?)$) {
|
||
|
set $is_legal 1;
|
||
|
set $query ip=$1;
|
||
|
}
|
||
|
if ($is_legal = 0) {
|
||
|
return 404;
|
||
|
}
|
||
|
if ($scheme = https) {
|
||
|
set $is_https 1;
|
||
|
}
|
||
|
if ($http_user_agent ~* (curl|wget)) {
|
||
|
set $is_cli 1;
|
||
|
set $query $query&cli=true;
|
||
|
}
|
||
|
set $flag_https_cli $is_https$is_cli;
|
||
|
if ($flag_https_cli = 00) {
|
||
|
return 301 https://$server_name$request_uri;
|
||
|
}
|
||
|
include fastcgi_params;
|
||
|
fastcgi_pass 127.0.0.1:9000;
|
||
|
fastcgi_param QUERY_STRING $query;
|
||
|
fastcgi_param SCRIPT_FILENAME /var/www/echoIP/backend/queryInfo.php;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
重启Nginx服务
|
||
|
|
||
|
```
|
||
|
shell> nginx -s reload
|
||
|
```
|
||
|
|
||
|
### Docker方式
|
||
|
|
||
|
待补充...
|
||
|
|
||
|
## 许可证
|
||
|
|
||
|
MIT [@dnomd343](https://github.com/dnomd343) [@ShevonKuan](https://github.com/ShevonKuan)
|