업스트림 해결이 구성을 중단함

업스트림 해결이 구성을 중단함

나는 최신 NGINX가 설치된 Ubuntu 16.04를 사용하고 있습니다.공식 저장소:

$ 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를 영원히 사용합니다(리졸버의 '유효한' 매개변수 무시).
  • DNS 쿼리가 여러 IP를 반환하는 경우 nginx는 그들에게 라운드 로빈을 할 것입니다.
  • 업스트림 요구 사항(백업 엔드포인트 등)이 더 복잡하다면 이 접근 방식이 적합하지 않을 수 있습니다.

관련 정보