upstream-dynamic: NGINX 上游的动态 DNS 解析
安装
您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:
- RedHat Enterprise Linux 7、8、9 和 10
- CentOS 7、8、9
- AlmaLinux 8、9
- Rocky Linux 8、9
- Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-upstream-dynamic
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-upstream-dynamic
通过在 /etc/nginx/nginx.conf 顶部添加以下内容来启用该模块:
load_module modules/ngx_http_upstream_dynamic_servers_module.so;
本文档描述了 nginx-module-upstream-dynamic v0.4.0,于 2016 年 3 月 15 日发布。
这是一个 nginx 模块,用于解析上游中的域名并保持其最新。
默认情况下,nginx 上游中定义的服务器仅在 nginx 启动时解析。此模块为 server 定义提供了一个额外的 resolve 参数,可用于异步解析上游域名。这使得上游定义根据每个域名的 DNS TTL 保持最新。如果您想使用上游来处理可能频繁更改 IP 地址的动态类型域名,这将非常有用。
此模块还允许 nginx 启动,即使上游包含一个不再解析的无效域名。默认情况下,如果上游服务器包含一个无法解析的域名,nginx 将无法启动。使用此模块,即使域名无效,nginx 仍然可以启动,但会记录错误,并将无法解析的域名标记为不可用。
用法
在您的上游中使用 server 定义,并指定 resolve 参数。
注意: 必须在 nginx 配置的 http 级别定义一个 resolver,以使 resolve 生效。
http {
resolver 8.8.8.8;
upstream example {
server example.com resolve;
}
}
指令
server
语法: server address [parameters];
上下文: upstream
为上游定义一个服务器。该模块增加了指定 resolve 参数的能力。当指定时:
- 域名将持续解析,并根据每个域名的 TTL 保持最新。
- 无法解析的域名被视为非致命错误(但会记录)。如果无法解析域名,nginx 仍然可以启动,但服务器将被标记为不可用。
可以使用以下参数(有关详细信息,请参见 nginx 的 server 文档):
weight=number
max_fails=number
fail_timeout=time
backup
down
resolve
GitHub
您可以在 nginx-module-upstream-dynamic 的 GitHub 仓库 中找到有关此模块的其他配置提示和文档。