本文将介绍如何利用纯 Nginx 搭建 IP 地址查询接口(只查询 IP 地址,不查询 IP 归属地),如果有查询 IP 归属地的需求,可以参考另一位大佬的一篇文章 纯 Nginx 打造 IP 地址查询接口。
好久不见,这两个月由于一些原因(考试、面试)一直没有更新博客,今天终于有时间了,就赶忙来更新。用 Nginx 来获取 IP 这个方法是去年 8 月份在 DNSPod 处理 DDNS Openwrt 插件无法更新 IP 的 case 时了解到的,当时插件里获取 IP 的接口 ns1.dnspod.net:6666 由于是早些年写的一个程序仅支持 http/0.9 导致 DDNS 插件无法正常获取 IP 地址,后面一位大佬改用 Nginx 来获取 IP 地址,那次才知道 Nginx 原来还能这么用,简直是学艺不精哈哈哈。
安装 Nginx 的方法就不介绍了,直接丢配置文件了。
文末有现成的,如果你不想自己搭建的话可以直接使用。
配置示例
获取 IP(JSON)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| server { listen 80; listen [::]:80;
listen 443 ssl http2; listen [::]:443 ssl http2;
server_name ipv4.ddnsip.cn ipv6.ddnsip.cn ddnsip.cn;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; location / { default_type application/json; return 200 '{"ip":"$remote_addr"}'; } ssl_certificate /root/.acme.sh/*.ddnsip.cn/fullchain.cer; ssl_certificate_key /root/.acme.sh/*.ddnsip.cn/*.ddnsip.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; }
|
获取 IP(纯文本)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| server { listen 80; listen [::]:80;
listen 443 ssl http2; listen [::]:443 ssl http2;
server_name ipv4.ddnsip.cn ipv6.ddnsip.cn ddnsip.cn;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; location / { default_type text/plain; return 200 $remote_addr; } ssl_certificate /root/.acme.sh/*.ddnsip.cn/fullchain.cer; ssl_certificate_key /root/.acme.sh/*.ddnsip.cn/*.ddnsip.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; }
|
获取 UA
这是额外的内容,闲的没事写的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| server { listen 80; listen [::]:80;
listen 443 ssl http2; listen [::]:443 ssl http2;
server_name ipv4.ddnsip.cn ipv6.ddnsip.cn ddnsip.cn;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; location / { default_type text/plain; return 200 $http_user_agent; }
ssl_certificate /root/.acme.sh/*.ddnsip.cn/fullchain.cer; ssl_certificate_key /root/.acme.sh/*.ddnsip.cn/*.ddnsip.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; }
|
附言
看着很复杂是不是,是不是懒得写(/手动狗头,没关系,这有现成的
UA: https://ua.ddnsip.cn 或 https://ddnsip.cn/ua (JSON)
IP: https://ddnsip.cn 或 https://ddnsip.cn/json
IPv4: https://ipv4.ddnsip.cn 或 https://ddnsip.cn/json
IPv6: https://ipv6.ddnsip.cn 或 https://ipv6.ddnsip.cn/json
Linux下使用直接看下面链接里的说明:
https://www.ddnsip.cn
闲的没事搞了个查IP归属的(不保证稳定和准确):
https://ip.ddnsip.cn/