众所众知,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分钟不到就可以恢复访问,完美!