纯 Nginx 实现一个 IP 地址显示 API
如标题所示,不依赖任何后端方法,使用纯 Nginx 实现(Nginx-Lua 也不需要)一个“显示我的 IP 地址”的 API。
实际上这是我在很久之前看过的一篇文章中介绍的技巧,时间有点久了,一时半会儿也找不到原文地址,但发现自己当时写的 Nginx 配置文件还在,所以翻出来分享一下。
普通版本
Nginx 的配置文件中提供了一个变量 $remote_addr
用来获取用户访问本实例时的 IP 地址,我们只要将这个变量的值返回给用户就行了(没错,就是这么简单!):
1 | location / { |
这里使用 default_type text/plain
来向浏览器表明我们返回的值是一个纯文本,从而能够被浏览器直接显示出来。
JSON 版本
同样依赖于 $remote_addr
这个变量,我们可以将返回值稍微修饰一下,实现一个返回 JSON 数据的 API:
1 | location /json { |
配置文件中的 default_type application/json
向浏览器表明我们的返回的值是 JSON 数据。
测试效果
配置好后可以使用 curl
来测试一下(下面的 API 域名和返回值中的 IP 地址都做了替换处理,非真实情况):
1 | $ curl http://example.com/ |