Upstream разрешает разрывы конфигурации

Upstream разрешает разрывы конфигурации

Я использую Ubuntu 16.04 с последней версией NGINX, установленной с сайтаих официальный репозиторий:

$ sudo nginx -v
nginx version: nginx/1.11.8

У меня есть следующее определение в /etc/nginx/sites-available/greendot.conf:

# local dnsmasq
resolver 127.0.0.1;

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

upstream websocket {
  zone elixr 64k;
  server greendot-elixr-1:4000 resolve;
  server greendot-elixr-2:4000 resolve;
}

server {
  listen 4000;
  location / {
    proxy_pass http://websocket;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
  }
}

Я следовалдокументация по настройке DNS-разрешенных вышестоящих серверов, и все же эта конфигурация дает сбой:

$ sudo nginx -T
nginx: [emerg] invalid parameter "resolve" in /etc/nginx/sites-enabled/greendot-nginx.conf:11
nginx: configuration file /etc/nginx/nginx.conf test failed

Моя цель — просто создать сервер, который использует DNS для периодического разрешения своих членов. Что я делаю не так?

решение1

Параметр resolveявляется частью коммерческого предложения nginx.

Вот подход, который я в итоге использовал:

server {
    ...

    # Use docker's internal nameserver
    resolver 127.0.0.11 valid=10s ipv6=off;

    location / {
        set $target myproject-web;
        proxy_pass  http://$target:8000;
    }
}

Обратите внимание, что:

  • Вам необходимо определить переменную (например, $target), иначе nginx выполнит запрос один раз и будет использовать полученные IP-адреса вечно (игнорируя параметр «valid» резолвера).
  • Если DNS-запрос возвращает несколько IP-адресов, nginx будет циклически обращаться к ним.
  • Этот подход может не подойти вам, если у вас более сложные требования к восходящему потоку данных (резервные конечные точки и т. д.).

Связанный контент