上游解析中斷配置

上游解析中斷配置

我使用的是 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 會循環處理它們。
  • 如果您有更複雜的上游需求(備份端點等),則此方法可能不適合您。

相關內容