纯 Nginx 实现一个 IP 地址显示 API


如标题所示,不依赖任何后端方法,使用纯 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"}

转载自

声明:小小博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 纯 Nginx 实现一个 IP 地址显示 API


Carpe Diem and Do what I like