私の構成で廃止されたDockerリンクを削除しようとしています。残っているのは、コンテナを再作成したときにそれらの_Bad Gateway
_ nginxリバースプロキシエラーを取り除くことです。
注:ブリッジモードでDockerネットワークを使用しています。 (_docker network create nettest
_)
私はnginx内で次の構成スニペットを使用しています:
_location / {
resolver 127.0.0.1 valid=30s;
set $backend "http://confluence:8090";
proxy_pass $backend;
_
confluence
という名前のDockerネットワークでホスト名nettest
のコンテナーを開始しました。nettest
でnginxコンテナを開始しました。confluence
にpingできますconfluence
はnginxコンテナの_/etc/hosts
_ファイル内にリストされます127.0.0.11
_からdocker network default dns resolver _/etc/resol.conf
_を試しましたconfluence could not be resolved (3: Host not found)
と書かれています誰もがDockerネットワークでnginxリゾルバを設定する方法、またはDockerネットワークホスト名を正しく解決するようにNginxを強制する方法の代替案を知っていますか?
まず、127.0.0.11
でDocker組み込みDNSサーバーを使用する必要があります。
問題の原因は次のいずれかです。
nginxは、DNSクエリにIPv6(AAAAレコード)を使用しようとしています。
ソリューションについては、 https://stackoverflow.com/a/35516395/152949 を参照してください。
基本的に次のようなもの:
http {
resolver 127.0.0.11 ipv6=off;
}
これはおそらくDocker 1.11の問題ではないでしょう。
DockerドメインIPv6クエリを外部サーバーに転送しないように修正しました( #21396 )
resolver
構成ディレクティブを誤ってオーバーライドしないように注意してください。私の場合、 MozillaのSSL構成ジェネレーター のserver
ブロックresolver 8.8.8.8 8.8.4.4;
にあり、http
ブロックのresolver 127.0.0.11;
をオーバーライドしていました。それは長い間頭をかいていた...
たぶん、コンテナの/etc/resolv.conf
コンテナーの正しいDNS構成が表示され、リゾルバーにそのDNSサーバーIPが使用されます。
127.0.0.11
はRancherでは機能しません
これは、172.0.0.11のdocker internal resolverを使用してHost.docker.internalをルックアップしようとするWindowsのdockerコンテナーでこれに当たります。 Host.docker.internalを除くすべてのクエリは正しく解決されます。修正は、nginx.confのリゾルバー行にipv6 = offフラグを追加することでした。