Nginx 两行代码获取公网地址 转载翻译自

仅通过 Nginx 不写任何后端代码,即可显示(访问者的)公网地址。(不需要任何 php 或者 Nginx-Lua 等后端代码)

实现代码块:

1
2
3
4
location /ip {
default_type text/plain;
return 200 $remote_addr;
}

响应结果如下:

1
2
$ curl https://example.com/ip
2001:1b48:103::189

代码 default_type txt/plain 可阻止文件的下载,没有其他作用。即浏览器直接显示 IP 地址。

如果想以JSON格式显示,实现代码如下:

1
2
3
4
location /json_ip {
default_type application/json;
return 200 "{\"ip\":\"$remote_addr\"}";
}

相应结果如下:

1
2
3
4
$ curl -s https://example.com/json_ip | jq
{
"ip": "2001:1b48:103::189"
}

希望以上小技巧可以帮助到您。