1.问题描述
如果在nginx中反代了一个域名请求,大概率会发生在使用一断时间后,各种响应超时。
查nginx出错日志,很容易定位到问题,是因为nginx在转发请求的时候,使用了第一次解析的IP, 导致请求异常。
2.解决思路:禁用DNS缓存
答案就是使用变量+指定dns resolver的方式,代替直接域名请求转发。
配置例:
resolver 202.102.134.68 114.114.114.114 valid=5 ipv6=off;
location /applyrecord/aladinnApplyrecord {
set $skyneturl "http://dev.abc.com:10077";
proxy_pass $skyneturl;
}
上述 valid=5 意思是:这个resolver的dns缓存只保留5秒,5秒后的请求就会重新刷新,可以满足绝大部分场景。