nginx反向代理DNS缓存问题
遇到的问题
nginx
中使用反向代理,目标服务器更换解析ip
后,请求无法代理到新服务器上
原因
nginx
在启动的时候会将代理服务器域名解析的ip
地址缓存起来。
解决方案
方案一
重启nginx
,会重新缓存DNS解析结果
方案二
使用 resolver
配置解决
在nginx
中配置解析服务器,搭配变量解析。可在http|server|location
中设置
resolver address1 address2 [valid=time] [ipv6=on|off] [status_zone=zone]
多个地址之间,使用空格分开,valid
设置缓存时间,是否关闭ipv6
地址解析,默认开启
server {
resolver 114.114.114.114 8.8.8.8 valid=3600s;
resolver_timeout 3s;
set $proxy_url http://a.com;
location /test/ {
proxy_pass $proxy_url;
}
}