Nginx开源DNS自动刷新功能

使用Nginx做为代理的各位可能都知道,以前你的上游配置如果是一个域名的话,那一定会有踩坑的时候,那就是这个域名所指向的DNS是不会动态更新的,你Nginx启动的时候域名指向的哪些IP,那就一直会用这些IP,不会再去更新,即便你的DNS在后来做过变更,Nginx也是不会更新的。只有你在重新加载Nginx配置的时候才会更新。

虽然后来也出现了Lua插件可以实现这个功能,但是如果你之前是用的原生Nginx的话,那你还需要去配置Lua环境,甚至重新编译Nginx以配合Lua的生态。这无疑会增加你的维护成本。如果你使用的是Openresty这种已经集成了Lua环境的版本,但这个组件也还是需要你去安装以及做一些Lua的配置的,也还是会有一定的成本,毕竟不是原生支持的。

现在好了,Nginx官方将这个以前得付费才能使用的功能开放给开源版本了。下面是官方ChangeLog:

Changes with nginx 1.27.3                                        26 Nov 2024

    *) Feature: the "server" directive in the "upstream" block supports the
       "resolve" parameter.

    *) Feature: the "resolver" and "resolver_timeout" directives in the
       "upstream" block.

    *) Feature: SmarterMail specific mode support for IMAP LOGIN with
       untagged CAPABILITY response in the mail proxy module.

    *) Change: now TLSv1 and TLSv1.1 protocols are disabled by default.

    *) Change: an IPv6 address in square brackets and no port can be
       specified in the "proxy_bind", "fastcgi_bind", "grpc_bind",
       "memcached_bind", "scgi_bind", and "uwsgi_bind" directives, and as
       client address in ngx_http_realip_module.

    *) Bugfix: in the ngx_http_mp4_module.
       Thanks to Nils Bars.

    *) Bugfix: the "so_keepalive" parameter of the "listen" directive might
       be handled incorrectly on DragonFly BSD.

    *) Bugfix: in the "proxy_store" directive.

Ref: https://nginx.org/en/CHANGES

目前Openresty的Nginx版本还在1.27.1.1,估计还得等几个月,Openresty才会更新,大家耐心等待吧。

Openresty官方地址:https://openresty.org/en/download.html