nginx配置自动更新dns缓存
nginx dns缓存
在nginx中,在第一次dns解析成功后,结果会被缓存,并不会自动更新。域名配置更新后,需要手动重启nginx或重新加载nginx配置,触发后续网络请求进入更新dns。
nginx配置示例
server {
listen 18080;
server_name x.x.x.x;
# 配置dns解析服务器,并使用valid参数设置dns缓存时间
resolver 127.0.0.11 valid=10s;
location /xx-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 使用set参数方式定义域名,触发nginx解析。而不是在proxy_pass写死静态域名值
set $upstream_xx "你的域名";
# 使用rewrite移除location中匹配的前缀
rewrite ^/xx-api/(.*)$ /$1 break;
# 通常的,proxy_pass的配置值,末尾要带/符,使得自动去除匹配的location前缀,并将剩余部分转发给上游服务
# 注意这里和常规配置不同。使用set动态方式后,会导致proxy_pass解析出非期望效果。因此要结合使用rewrite命令,同时proxy_pass末尾不带/符
proxy_pass http://$upstream_xx:8089;
}
}