分享一个快速获取 Nginx 客户端公网 IP 的神技

Posted by Mike on 2020-05-11

本文将给大家介绍一个 Nginx 的小技巧,可以在不使用任何编程语言的情况下,直接返回客户端公网 IP 地址。

实现方法非常的简单,你只要在 Nginx 中配置以下内容就可以解决问题。

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

使用 curl 命令测试一下,我们从响应结果可以看到只显示了客户端的 IP 地址。

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

default_type text/plain 指令除了阻止 Web 浏览器尝试将响应下载为文件外,并没有使用任何实用程序。即,Web 浏览器可以直接显示 IP 地址。

如果你想将以上结果以 JSON 格式输出,只需做一点小修改即可实现。具体方法如下:

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

现在,响应的就是一个漂亮的 JSON 格式的输出。

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

至此,快速通过 Nginx 获取客户端公网 IP 地址的小技巧就演示完了。希望这个 Nginx 的小技巧可以为你节省一些维护时间。

本文翻译至:https://url.cn/5Th0D1e,版权归原作者所有。