Nginx не может разрешить апстрим с помощью специального распознавателя DNS - PullRequest
0 голосов
/ 12 мая 2019
docker run --rm --net=host -v $PWD/default.conf:/etc/nginx/conf.d/default.conf nginx
2019/05/12 17:02:49 [emerg] 1#1: host not found in upstream "tickethub.service.consul" in /etc/nginx/conf.d/default.conf:10
nginx: [emerg] host not found in upstream "tickethub.service.consul" in /etc/nginx/conf.d/default.conf:10

Пока dig правильно показывает запись DNS:

dig @127.0.0.1 -p 8600 tickethub.service.consul

; <<>> DiG 9.12.3-P1 <<>> @127.0.0.1 -p 8600 tickethub.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57394
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;tickethub.service.consul.  IN  A

;; ANSWER SECTION:
tickethub.service.consul. 0 IN  A   172.23.0.6
tickethub.service.consul. 0 IN  A   172.23.0.5
tickethub.service.consul. 0 IN  A   172.23.0.7

;; ADDITIONAL SECTION:
tickethub.service.consul. 0 IN  TXT "consul-network-segment="
tickethub.service.consul. 0 IN  TXT "consul-network-segment="
tickethub.service.consul. 0 IN  TXT "consul-network-segment="

;; Query time: 0 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: Sun May 12 16:58:54 GMT 2019
;; MSG SIZE  rcvd: 209

И мой конфиг nginx:

server {
    listen       80;
    server_name  localhost;

    location / {
        resolver 127.0.0.1:8600;
        proxy_pass   http://tickethub.service.consul;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

В чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

mic drop

Это сработало, когда я установил proxy_pass с помощью переменной:

location / {
    resolver consul;
    set $endpoint tickethub.service.consul;
    proxy_pass http://$endpoint/;
}
0 голосов
/ 13 мая 2019

Это сработало, когда я явно установил DNS на контейнере докера на 127.0.0.1, что означает, что Nginx, вероятно, пытается разрешить его БЕЗ использования указанного арбитра argh ...

Я думаю, что мне также пришлось изменитьпорт DNS на 53 вместо явного 8600

или что-то ...

Возможно, куча ошибок nginx ...

...