問題タブ [jwilder-nginx-proxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - docker と jwilder/nginx-proxy http/https の問題
を介してosxでdockerを使用してboot2docker
います。
私は 2 つのホストを持っています: docker ホストの IP アドレスsite1.loc.test.com
をsite2.loc.test.com
指しています。
両方ともポート経由80
で利用できるはずです。443
だから私はjwilder/nginx-proxy
リバースプロキシの目的で使用しています。
しかし、実際には、ポートをdocker-compose
介して開こうとするたびにそれらすべてを実行していると80
、にリダイレクトされ443
(301 Moved Permanently)
ます。
設定で何かを見逃したのjwilder/nginx-proxy
でしょうか?
docker-compose.yml
docker - jwilder/nginx-proxy は nginx のウェルカム画面を指しています
nginx-proxy docker コンテナーを使用しようとしていますが、サブドメインのないドメイン (mydomain.com) を指定すると、ウェルカム ページが表示されます。Docker-Compose を使用しており、.yml ファイルは次のようになります。
これは構成上のエラーですか?
nginx - jwilder/nginx-proxy を使用して、同じコンテナーの異なるポートで仮想ホストを実行する
jwilder/nginx-proxy の背後で sonatype/nexus3 を実行しようとしていますが、それを maven および docker プライベート リポジトリとして使用するという考えがあります。nginx プロキシの nexus サブドメインを nexus コンテナーのポート 8081 にプロキシし、docker サブドメインを同じコンテナーのポート 8082 にプロキシしたいと思います。これは可能ですか?
私は最初に、nexus.mydomain.com
Let's Encrypt 証明書を使用して、TSLのように Maven 部分を問題なく動作させました。
docker run --restart=always --name nginx -d -p 80:80 -p 443:443 -v /root/certs/:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
docker run --restart=always -d -p 8081:8081 --name nexus -e VIRTUAL_HOST=nexus.mydomain.com -v /root/nexus-data:/nexus-data sonatype/nexus3
その後、docker プライベート リポジトリを実行するには、追加のポートを使用する必要があることに気付きました。そこで、ポート 8082 で docker リポジトリを作成し、保存された構成を使用してコンテナーを再作成し、新しいポートを公開し、サブドメインを追加しました。
docker run --restart=always -d -p 8081:8081 -p 8082:8082 --name nexus -e VIRTUAL_HOST=nexus.mydomain.com,docker.mydomain.com -v /root/nexus-data:/nexus-data sonatype/nexus3
ボリュームをマウントするnginx構成をオーバーライドしようとしました/etc/nginx/vhost.d
が、成功しませんでした。手がかりはありますか?
nginx - Docker jwilder/nginx-proxy の場所の構成
3 つの ( app-client,app-a, app-b ) アプリケーションが jetty サーバーと 1 つの NGINX ロード バランサー ( app-lb ) で実行されています。すべての (内部または外部の) 要求は、ロード バランサーを介してアプリケーションに送信されます。Web コンテキスト ( /app-a/ または /app-b/) 名に基づいて、LB は要求を正しいアプリケーションに転送します。LB で (場所 /app-a/ と場所 /app-b と場所 /app-client) を構成しました。app-a は app-b を呼び出し、 app-b は app-a を呼び出し、 app-client は外部から呼び出され、 app-client は app-a または app-b を呼び出します。
アプリケーション用に Docker-composer を作成しました。循環依存を避けるために、Docker net を使用しました。それはうまくいっています。
アプリケーションをスケールアップした場合。LB は、この新しいアプリケーション コンテナーについて知りません。
私はいくつかのチュートリアルを行って、 NGINX の代わりにjwilder/nginx-proxyを使用しようとしました。VIRTUAL_HOST=app-name 変数を使用してそれを使用すると、構成ファイルのアップストリームが更新されます。ただし、アプリケーションは各コンテナーのロケーション マッピングに基づいて実行されます。指定しない場合、要求が正しいコンテナーにどのように送られるか。
この構成はコンテナーによって動的に更新されるため、以下のように LB の default.conf ファイルでロケーション マッピングを指定する方法、または内部呼び出し URL を作成する方法。
nginx - nginx-proxy の設定を変更する方法
私はこのライブラリを使用しています:
https://github.com/jwilder/nginx-proxy
これが私のdocker-composeファイルです:
2 つの新しいノード サービスを追加しました...
私はこのようにすることができます:curl -H "Host: service2.local" localhost
そしてservice2から応答を得る....
質問は、これからどのようなメリットがありますか? また、80 ポートで service1 を実行するにはどうすればよいですか?
これはDockerfile
service1からのものです: