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 模塊 是更好的。