使用 nginx 获取自己的公网 IP 地址
针对宽带上网,一般来说,我们都习惯于使用下面这些网站获取自己的公网 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 -t
和 nginx -s reload
之后就大功告成。
在终端执行 curl host.940304.xyz/ip
即可得到自己的 IP 地址,这是我自己弄的域名和地址,应该不会再忘记了吧 😅