客户端访问加速域名经过Nginx转发时,如何定期刷新DNS解析
适用场景
如果您配置了Nginx代理转发,即:终端用户访问加速域名时,首先解析到Nginx服务器,由Nginx服务器将该请求转发到CDN节点,而Nginx服务器在启动/重载的时候会去解析转发的域名,此时域名如果修改了DNS解析,Nginx服务器将无法感知,从而导致域名无法解析,域名访问失败。
解决方案
如果想要定期刷新域名DNS解析,不用重启Nginx服务器,可以通过在Nginx上配置Resolver实现。
- 示例一:
- Nginx服务器原“nginx.conf”配置:
location /prod-url-test/ { ... proxy_pass http://$proxy_url; }
- 添加resolver后的配置:*.*.*.*为设备网络使用的公共DNS或本地DNS,可根据业务情况配置两个DNS,valid为解析结果有效期。
location /prod-url-test/ { resolver *.*.*.* *.*.*.* valid=300s; resolver_timeout 10s; set $proxy_url "prod-url-test.example.com"; proxy_pass http://$proxy_url; }
- Nginx服务器原“nginx.conf”配置:
- 示例二:
- Nginx服务器原“nginx.conf”配置:
location = /test/example1.txt{ expires 30s; rewrite ^/test/example2.txt break; proxy_pass https://test.example.com; }
- 添加resolver配置:*.*.*.*为设备网络使用的公共DNS或本地DNS,可根据业务情况配置两个DNS,valid为解析结果有效期。
set $var_host "test.example.com"; resolver *.*.*.* *.*.*.* valid=300s; resolver_timeout 10s; location = /test/example1.txt{ expires 30s; rewrite ^/test/example2.txtbreak; proxy_pass https://$var_host; proxy_set_header Host test.example.com; }
- Nginx服务器原“nginx.conf”配置: