1 nginx 的upstream的解析,默认在nginx 启动后,缓存将永久,除非 -s reload。nginx
如:
upstrem web_backend {
server web1:80;
}git
在启动的时候web1的地址为1.1.1.1 (dns控制),后来架构调整 web1的地址变为2.2.2.2。而后这个时候nginx并不会自动感应到dns的变化,而是一直缓存着。 除非使用一下手段github
参考:
https://github.com/GUI/nginx-upstream-dynamic-servers/blob/master/README.mdweb
https://github.com/wdaike/ngx_upstream_jdomaindocker
介绍:
nginx-upstream-dynamic-servers 模块后端
使用方法: (resolver指令和 upstream要配套使用,不然报错,动态缓存时间vaild可设置,依赖知道那个的域名地址)缓存
http { ... resolver 10.59.72.3 valid=30s; .... } upstream rpm { zone upstream_dynamic 64k; server ops-rpmbuild001.a.pa.com:8001 resolve; }
特色架构
介绍2: jdomain模块dom
特色:ide
upstream rpm {
#server 1ops-rpmbuild001.a.pa.com:8001 resolve;
jdomain ops-rpmbuild001.a.pa.com port=8001 interval=5;
}
(在使用jdomain的经验当中,若是解析中来的后端有多个,而请求恰好落地的那个后端响应不通,则nginx会自动轮询到下一个地址,则此处$reqeust_time,$upstream_addr 地址会有两个用逗号隔开,固然请求时间会比较长了)
综合上述,其实使用 nginx-upstream-dynamic-servers 模块 是更好的。