Nginx如何解析后端动态IP
众所众知,nginx 可以做反向代理。
我家是电信的公网 ip, 有公网但是没有 80 和 443, 更别说备案了,这怎么办呢。正好看到阿里云有个 2c2g 的一年服务器只需 40+,还有 3M 的宽带,做 nginx 转发完全够了呀!
于是我立马下单,很快的做好了 nginx 反向代理和域名的备案,就是你们现在所看到的这个站(blog.dimeta.top,假如是 ifengdian 的话应该是 bing 收录爬取到非公开的了😂)。
但是我发现家里的公网 ip 一变动,ifengdian.top 的 ddns 解析也会一起跟着动,按理说只需要等待 10 分钟,ttl 过去后反代的 blog.dimeta.top 就可以正常访问了呀,可是为啥一变动后就会 502 呢,而且一重启 nginx 就就可以了。
搜索之后发现:
nginx 只会在启动时候进行一次域名解析,导致 ddns 更新后还是连接原 ip。
经过这个博文指点:
首先想到的是,使用
upstream进行反向代理就可以很好地解决这个问题,但是因为data.misssun.com这个域名对应的服务器IP地址会动态的变化,导致upstream反向代理会出现502的情况。通过查阅资料,发现可以通过制定
resolver字段对域名进行间隔时间的解析,可以完美的实现动态地址解析的效果。通过resolver可以配置多个DNS服务器地址,Nginx会采用轮询的方式去访问DNS服务,Nginx会缓存DNS对域名解析的结果,缓存的时间由valid指定。
我明白了只需要使用变量的方式设置反代地址,并设置 10s 的解析缓存,就可以完美解决这个问题

再次访问 blog.dimeta.top,更改源站 IP,10 分钟不到就可以恢复访问,完美!