server {
listen 84 reuseport;
set $ups "default";
set $ups_scheme "http";
set $access_log_path "/tmp/access.log";
access_log $access_log_path compression;
location / {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass $ups_scheme://$ups;
....
ng启动从数据库加载vhost配置,同时dyups.update(ups_key, ups_value)。这里的ups_key形如ups_1.com这个过程没错,测试也都正常,但是中间偶尔会有几次,upstream不是走的动态配置,而是走了resolve。日志如下:2016/08/19 17:46:11 [error] 29738#29738: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
2016/08/19 17:46:16 [error] 29738#29738: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
2016/08/19 17:46:21 [error] 29738#29738: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
2016/08/19 17:46:26 [error] 29738#29738: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
2016/08/19 17:46:31 [error] 29738#29738: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
2016/08/19 17:46:36 [error] 29738#29738: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53
2016/08/19 17:46:41 [error] 29738#29738: *147 ups_1.com could not be resolved (110: Operation timed out), client: 127.0.0.1, server: , request: "GET /a HTTP/1.1", host: "1.com:84"
造成的现象:返回503,或卡在那里。
提了个issue在:https://github.com/yzprofile/ngx_http_dyups_module/issues/64
但不确定是nginx本身的问题,还是dyups模块问题。