Upstream-Konfiguration zum Auflösen von Unterbrechungen

Upstream-Konfiguration zum Auflösen von Unterbrechungen

Ich verwende Ubuntu 16.04 mit der neuesten NGINX-Version vonihr offizielles Repository:

$ sudo nginx -v
nginx version: nginx/1.11.8

Ich habe Folgendes definiert in /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;
  }
}

Ich bin gefolgtdie Dokumentation zum Einrichten von DNS-aufgelösten Upstream-Servern, und dennoch schlägt diese Konfiguration fehl:

$ 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

Mein Ziel ist es einfach, einen Server zu erstellen, der DNS verwendet, um seine Mitglieder regelmäßig aufzulösen. Was mache ich falsch?

Antwort1

Der resolveParameter ist Teil des kommerziellen Angebots von nginx.

Hier ist der Ansatz, den ich letztendlich verwendet habe:

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;
    }
}

Beachten Sie, dass:

  • Sie müssen eine Variable definieren (wie $target), oder nginx führt die Abfrage einmal durch und verwendet die resultierende(n) IP(s) dauerhaft (unter Ignorierung des „valid“-Parameters des Resolvers).
  • Wenn die DNS-Abfrage mehrere IPs zurückgibt, führt nginx einen Round-Robin-Ansatz zu ihnen durch.
  • Dieser Ansatz ist für Sie möglicherweise nicht geeignet, wenn Sie komplexere Upstream-Anforderungen haben (Backup-Endpunkte usw.).

verwandte Informationen