内容简介:NodeJS + Aliyun 实现 DDNS
DDNS,即动态DNS,简单来说就是服务器的 IP 地址经常变动,这个时候需要一个主动上报的服务来更新 DNS 的解析记录,保证域名指向正确的 IP 地址。
比如在自己家中的树莓派上部署了某些服务,且路由器有公网 IP,由于每次重新拨号,公网 IP 都会变,所以想要根据域名去访问树莓派,必须做 DDNS。
DDNS 可以选择 花生壳,但是花生壳提供的 DDNS 服务无法自定义域名,配置起来也较为麻烦,所以这里用 NodeJS 来实现一个 DDNS 服务。
源码地址(https://github.com/luoye-fe/aliyun-ddns)
原理
-
定期获取本机公网 IP
-
比对当前 DNS 解析记录
-
如果不一致,调用阿里云的 API 更新 DNS 记录
相关资料
实现
获取公网 IP
访问 http://ifconfig.me/ip
获取本机外网 IP,注意需伪造 UA,不然403
阿里云 API 接口鉴权
比较复杂,也比较坑爹,具体实现可以看放出的 git 源码
-
把所有请求参数按顺序序列化
-
把所有请求参数拼接成
encodeURIComponent(key)=encodeURIComponent(value)&encodeURIComponent(key)=encodeURIComponent(value)
的形式得到signStr
-
拼接字符串,
[请求方式]&encodeURIComponent('/')&[signStr]
,如GET&%2F&[signStr]
-
HMAC SHA1 加密,加密的 key 为
[AccessKeySecret]&
,注意最后的&
获取当前解析记录
DescribeSubDomainRecords
具体看文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- php如何实现session,自己实现session,laravel如何实现session
- AOP如何实现及实现原理
- webpack 实现 HMR 及其实现原理
- Docker实现原理之 - OverlayFS实现原理
- 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Blockchain Basics
Daniel Drescher / Apress / 2017-3-16 / USD 20.99
In 25 concise steps, you will learn the basics of blockchain technology. No mathematical formulas, program code, or computer science jargon are used. No previous knowledge in computer science, mathema......一起来看看 《Blockchain Basics》 这本书的介绍吧!