如何搭建一个获取公网 ip 的服务(在中国)

2018-05-08 19:09:29 +08:00
 mofe

一直有在用 ifconfig.coifconfig.mewhatismyip.akamai.com 获取当前的公网 ip, 最近有需求要在浏览器中获取用户的真实 IP, 现有的轮子有跨域资源访问的问题, 并且 ifconfig.co 还被 block 了,遂产生了写一个支持跨域访问的获取公网 ip 的服务

关于为啥不能直接获取到用户的真实 IP 地址我也解释下,应用程序是部署在 k8s 集群中的 Sentry, 用于监控服务的错误信息, 但因为使用了阿里云 LoadBalance , calico 以及 k8s 的 ingress 控制器, 导致获取用户真实 IP 变得不那么容易,虽然这样能在一定程度上保证服务的稳定。

后来翻到在提交错误信息的时候是可以手动提交 IP 地址的,就产生了搭建这个服务的想法

图 1. sentry 报告的 IP 地址均为内网地址

以上是背景


开始兴匆匆撸代码,有用的代码就三行(完整代码)

add_header Access-Control-Allow-Origin *; # 允许跨域访问
content_by_lua '
    ngx.say(ngx.var.remote_addr) # 返回客户端 IP 地址
';

用不了几分钟就写完了,测试没问题,找个服务器部署吧,k8s 肯定是不能用了,据说腾讯云最近搞活动 研究了下活动内容, 花了 526 买了台 1 核 1G 200M 宽带的机器三年...

心里美滋滋,比首页的活动优惠并且配置还更好

复制粘贴没多久就搭好服务,解析域名,咱域名可是有备案的

虽然听说腾讯云和阿里云的备案是分开的, 想想再复杂能复杂到哪去。。悻悻的解析好域名,期望运气差的不会是我

果不其然,隔两天上去就发现被封了

那就老实备案吧

没多久第一个问题就出来了

备案密码是什么鬼。怎么一点印象都没

翻文档才想起来备案成功后有个短信告诉密码。。拿到后没用过就没了印象, 只能找回密码

信息需要填的不多,很快就提示操作成功,我就不吐槽网站的 UI 了。

再后来发现如果是在上海备案的机器,迁移备案也必须填写上海地址,电话以及上海户口(或者居住证)

碰巧居住证过期了没有续期。。。。。。

心痛。。结论,迁移备案比直接备案痛苦多了。。。

那就换一条路,注册一个新域名,本想等着 app 域名发布, 后来想到域名备案还不支持 app 域名,果断放弃

机智的花了 248 买了个 iiip.co 域名,

这会不用忍受迁移备案的痛苦了,美滋滋

万念俱灰。遂买了个香港阿里云静静的搭好服务器....


如果不用备案。这篇文章应该是这样

写好代码

add_header Access-Control-Allow-Origin *; # 允许跨域访问
content_by_lua '
    ngx.say(ngx.var.remote_addr) # 返回客户端 IP 地址
';

搭好服务

完。。。

18398 次点击
所在节点    云计算
65 条回复
mofe
2018-05-08 19:11:39 +08:00
额,悻悻的附上新写的博客的链接。。。https://www.mofe.me/2018/0508/
huiyifyj
2018-05-08 19:15:21 +08:00
233😂
看来备案转移确实麻烦。emm 下回转移会掂量着点。
songz
2018-05-08 19:16:49 +08:00
一篇文章就这么被那些表情毁了
mofe
2018-05-08 19:19:04 +08:00
@songz 图片没有缩放。。的确不容易排版。但是只有表情才能表达我的心情。。
mofe
2018-05-08 19:21:03 +08:00
@songz 没啥干货。。

精简版在这。。。https://www.mofe.me/2018/0504/
ichuan
2018-05-08 19:21:06 +08:00
不错,个人常用的一个是:

$ curl httpbin.org/ip
{
"origin": "1.2.3.4"
}
XSugar
2018-05-08 19:21:22 +08:00
开 https 就不用备案了
mofe
2018-05-08 19:24:21 +08:00
开 https 获取个 ip 输入的字母就多了。。curl 默认不会重定向。。。
moult
2018-05-08 19:24:31 +08:00
其实这种服务可以直接用 SAE 跑,完全不需要单独搞一台服务器。
mofe
2018-05-08 19:32:51 +08:00
@moult 赞。。 不过 SAE 存在感好低。。想到自己有 k8s 集群就没考虑过同类的产品。。
mofe
2018-05-08 19:37:28 +08:00
@ichuan httpbin.org 不开代理好像没法访问。。
crbee
2018-05-08 19:44:20 +08:00
是按流量计费的么?
valorachen
2018-05-08 19:44:36 +08:00
这是腾讯云什么活动?能给个链接吗?我好像找不到额
imdong
2018-05-08 19:46:07 +08:00
偷偷告诉楼主,根据协议原理,没备案的域名用 https 也不会被发现的。
litter123
2018-05-08 19:47:13 +08:00
获取公网 IP,写一个 PHP 就行了,$_SERVER['REMOTE_ADDR'],然后在 web 服务器设置允许的域名
tangzipeng
2018-05-08 19:54:40 +08:00
@imdong 难怪我前阵子域名没备案,一直可以用……
bzq2810
2018-05-08 20:00:14 +08:00
curl ip.cn
curl ipinfo.io
mofe
2018-05-08 20:06:24 +08:00
@crbee 估计按流量会更优惠,所以搞的按流量收费
mofe
2018-05-08 20:07:34 +08:00
@valorachen 两个优惠叠加诶,包年本来就有优惠,然后实名认证之后送的优惠券是可以叠加使用的,所以算下来比官网的优惠力度还要大,而且官网的宽带小水管,还是系列 1 的机器。。
mofe
2018-05-08 20:10:24 +08:00
@litter123 如果要比性能,openresty 应该比 PHP 会更快。。毕竟 cloudflare 之前用的就是 openresty

1 核 1G 的机器在从上海访问上海平均十几毫秒

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453197

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX