web-dev-qa-db-fra.com

Docker Network Nginx Resolver

J'essaie de supprimer les liens obsolètes de Docker dans ma configuration. Ce qui reste est de se débarrasser de ces erreurs de proxy inverse _Bad Gateway_ nginx lorsque j'ai recréé un conteneur.

Remarque: j'utilise les réseaux Docker en mode pont. (_docker network create nettest_)

J'utilise l'extrait de configuration suivant dans nginx:

_location / {
      resolver 127.0.0.1 valid=30s;
      set $backend "http://confluence:8090";
      proxy_pass $backend;
_
  1. J'ai commencé un conteneur avec le nom d'hôte confluence sur mon réseau Docker avec le nom nettest.
  2. Ensuite, j'ai démarré le conteneur nginx sur le réseau nettest.
  3. Je peux cingler confluence de l'intérieur du conteneur nginx
  4. confluence est répertorié dans le fichier _/etc/hosts_ du conteneur nginx
  5. nginx log dit `send () a échoué (111: Connexion refusée) lors de la résolution, résolveur: 127.0.0.1: 53``
  6. J'ai essayé le résolveur DNS par défaut du réseau docker _127.0.0.11_ de _/etc/resol.conf_
  7. nginx log dit confluence could not be resolved (3: Host not found)

Tout le monde sait comment configurer nginx resolver avec Docker Networks ou une alternative sur la façon de forcer Nginx à résoudre correctement le nom d'hôte du réseau Docker?

41
blacklabelops

Tout d’abord, vous devriez utiliser le serveur DNS intégré de Docker à 127.0.0.11.

Votre problème peut être causé par l'une des choses suivantes:

  1. nginx tente d'utiliser IPv6 (enregistrement AAAA) pour les requêtes DNS.

    Voir https://stackoverflow.com/a/35516395/152949 pour la solution.

    Fondamentalement, quelque chose comme:

    http {
        resolver 127.0.0.11 ipv6=off;
    }
    

    Ce n'est probablement plus un problème avec Docker 1.11:

    Correction pour ne pas transférer les requêtes IPv6 du domaine de menu fixe vers des serveurs externes ( # 21396 )

  2. Veillez à ne pas écraser accidentellement la directive de configuration resolver. Dans mon cas, j'avais dans le server block resolver 8.8.8.8 8.8.4.4; De générateur de configuration SSL de Mozilla , qui surchargeait le resolver 127.0.0.11; Dans le http bloquer. Cela m'a fait me gratter la tête pendant un long moment ...

81
Teoh Han Hui

Peut-être devriez-vous vérifier votre /etc/resolv.conf

Il indique la configuration DNS correcte de votre conteneur, puis utilise l'adresse IP de ce serveur DNS comme résolveur.

127.0.0.11 ne fonctionne pas dans un éleveur

4
exiaohao

Nous rencontrons ce problème avec les conteneurs Docker sur Windows qui tentent de rechercher Host.docker.internal à l'aide du résolveur interne du docker à 172.0.0.11. Toutes les requêtes seraient résolues correctement sauf Host.docker.internal. Le correctif consistait à ajouter l'indicateur ipv6 = off à la ligne de résolution dans nginx.conf.

0
hdub