针对宽带上网,一般来说,我们都习惯于使用下面这些网站获取自己的公网 IP,

在命令行也可以通过 curl 一个服务器地址然后得到自己的公网 IP。我们今天想说的就是这种服务。

一个很有名的域名,我记住了,就是 ip.sb,在支持 curl 的终端上(Linux、macOS 默认终端即可,Windows 下可以借助 Git Bash)直接执行 curl ip.sb 即可。

但是 ip.sb 不知道什么时候接入了 cloudflare,有时候可能我们的网无法很好连接到 cf 的 cdn 节点,于是迟迟得不到返回, 另一个重要影响就是通过 curl ip.sb 返回的地址有可能是代理节点的 IP,并非自己用的宽带的公网 IP 。我有腾讯云南京的服务器,何不用自己的域名来做一个这种功能呢。

实现起来非常简单,在 /etc/nginx/sites-enabled 下新增文件 myip.conf 内容如下

注:不一定是新增这个配置文件,如果你有 listen 80 的 server 块,在原有 server 块下新增一个 `location = /ip` 的匹配就好了,因为当 nginx 有多个 listen 80 的 server 块时会有 warning 信息
server {
        listen 80;
        listen [::]:80;
        server_name host.940304.xyz;
        server_tokens off;

        location = /ip {
                add_header Content-Type text/plain;
                access_log off;
                return 200 "$remote_addr\n";

        }
}

执行 nginx -tnginx -s reload 之后就大功告成。

在终端执行 curl host.940304.xyz/ip 即可得到自己的 IP 地址,这是我自己弄的域名和地址,应该不会再忘记了吧 😅

我的IP.jpg