不依赖任何后端方法,使用纯 Nginx 实现(Nginx-Lua 也不需要)一个“显示我的 IP 地址”的 API。

实际上这是我在很久之前看过的一篇文章中介绍的技巧,时间有点久了,一时半会儿也找不到原文地址,但发现自己当时写的 Nginx 配置文件还在,所以翻出来分享一下。

普通版本
Nginx 的配置文件中提供了一个变量 $remote_addr 用来获取用户访问本实例时的 IP 地址,我们只要将这个变量的值返回给用户就行了(没错,就是这么简单!):

location / {
default_type text/plain;
return 200 $remote_addr;
}

这里使用 default_type text/plain 来向浏览器表明我们返回的值是一个纯文本,从而能够被浏览器直接显示出来。

JSON 版本
同样依赖于 $remote_addr 这个变量,我们可以将返回值稍微修饰一下,实现一个返回 JSON 数据的 API:

location /json {
default_type application/json;
return 200 "{\"ip\":\"$remote_addr\"}";
}

配置文件中的 default_type application/json 向浏览器表明我们的返回的值是 JSON 数据。

测试效果
配置好后可以使用 curl 来测试一下(下面的 API 域名和返回值中的 IP 地址都做了替换处理,非真实情况):

$ curl http://example.com/
xx.xx.xx.xx

$ curl http://example.com/json
{"ip":"xx.xx.xx.xx"}

本文链接:https://www.aiunk.com/4156/

“不要眼睛一红,就觉得人间不值得了,散伙乃是人间常态,你我哪能例外。”

—— 未知《网络》
本站内容来源于互联网,所有转载、引用的文章、图片、视频等素材均来自网络公开渠道。我们对所转载的内容的版权和合法性不做任何保证。如果原作者或版权方认为本站内容侵犯其合法权益,敬请原作者或版权方及时联系我们,我们将在第一时间进行核实和处理,必要时删除相关内容。 本站的所有内容仅供个人学习与研究之用,不得用于任何商业用途。如需使用本站内容进行商业用途,请与原作者或版权所有者联系获取授权。 如有任何疑问或建议,请联系我们。