nginx在正常启动时会解析并缓存域名的解析值,当域名重新解析到新p时,nginx仍然缓存旧的解析值。可通过设置变量的方式来实现动态域名解析。下面通过实验来证书动态域名解析:
实验环境如下:
内网域名:example.com 当前解析值为192.168.182.129

nginx 服务器ip:192.168.182.130
后端服务器ip:192.168.182.129
nginx配置如下:

解释:首先设置设置NDS服务器地址:resolver 192.168.182.131 valid=30s ; # valid=30s 表示缓存 30 秒后重新解析。
然后再设置 set proxy_host "example.com"; proxy_pass http://proxy_host:8082;实现域名用变量替代。这里的set命令只能写在server或location里。
1、域名切换前(当前解析值为192.168.182.129)
通过浏览器访问nginx:8081端口,请求正常被转发到后端服务器192.168.182.129,结果如下:

2、域名切换后(重新解析到新ip:192.168.182.130)

再次通过浏览器访问nginx:8081端口, 请求正常被转发到新机器192.168.182.130上,结果如下:

结果分析:通过结果可以看出, nginx实现了动态域名解析,example.com域名从192.168.182.129切换为192.168.182.130后,nginx也跟着返回了不同的页面。