背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモードです。サービスAは、4つのコンテナすべてで同じポート番号(6000)を使用します。外部に公開されるポートの数を減らすために、4つのサービスインスタンスのプロキシとしてnginxを使用します。4つのサービスインスタンスは4つのアップストリームに属しており、4つのインスタンスへのアクセスには/service1や/service2などのパスが使用されます。 現時点では、ローカルで何らかのサービスにアクセスすると 502 エラーが報告され、困惑します。
ファイルを作成 バージョン: '2' ネットワーク: んん: ドライバー: ブリッジ サービス: サービス1: コンテナ名: サービス1 画像: foo ネットワーク: -んんん ボリューム: - ./logs/1:/apps/aaa/bbb-logs - ./common:/apps/aaa/bbb - ./xxx/1.xml:/ccc/targets.xml エントリポイント: foo.sh コマンド: start app=foo port=6000 サービス2: コンテナ名: サービス2 画像: foo ネットワーク: -んんん ボリューム: - ./logs/2:/apps/aaa/bbb-logs - ./common:/apps/aaa/bbb - ./xxx/2.xml:/ccc/targets.xml エントリポイント: foo.sh コマンド: start app=foo port=6000 サービス3: コンテナ名: サービス3 画像: foo ネットワーク: -んんん ボリューム: - ./logs/3:/apps/aaa/bbb-logs - ./common:/apps/aaa/bbb - ./xxx/3.xml:/ccc/targets.xml エントリポイント: foo.sh コマンド: start app=foo port=6000 サービス4: コンテナ名: サービス4 画像: foo ネットワーク: -んんん ボリューム: - ./logs/4:/apps/aaa/bbb-logs - ./common:/apps/aaa/bbb - ./xxx/4.xml:/ccc/targets.xml エントリポイント: foo.sh コマンド: start app=foo port=6000 nginx: コンテナ名: nginx イメージ: nginx:1.15-alpine ポート: - 6001:6001 ネットワーク: -んんん ボリューム: ./nginx/nginx.conf:/etc/nginx/nginx.conf nginx のログファイル nginx.conf ワーカープロセス数 8; ワーカー_rlimit_nofile 65535; イベント { epoll を使用します。 ワーカー接続 65535; } http { mime.types を含めます。 default_type アプリケーション/オクテットストリーム; ファイル送信オン; log_format main '[$time_local]$remote_addr-$upstream_addr "$request" $status $body_bytes_sent'; アップストリームサービス1.local { サーバーサービス-1:6000; } アップストリームサービス2.local { サーバーサービス2:6000; } アップストリームサービス3.local { サーバーサービス3:6000; } アップストリームサービス4.local { サーバーサービス-4:6000; } サーバー{ 6001を聴く; クライアントの最大ボディサイズは100Mです。 proxy_set_header ホスト $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 場所 /service1/ { proxy_pass http://service1.local/; } 場所 /service2/ { proxy_pass http://service2.local/; } 場所 /service3/ { proxy_pass http://service3.local/; } 場所 /service4/ { proxy_pass http://service4.local/; } 場所 /nginx_status { stub_status オン; access_log オフ; } } } このとき、 curl localhost:6001/service1/api/v1/.... は上記の 502 エラーを報告します。各コンテナには独自のネットワーク カードがあり、異なるコンテナのポート番号が競合しないのは当然です。 解決現時点ではこれより良い解決策はないので、4 つのサービスに異なるポート番号を使用し、それに応じて nginx を変更するしかありません。 補足: 同じサーバーに複数の Docker コンテナをデプロイするとポートリダイレクトの問題が発生する 実稼働環境では、複数のコンテナをデプロイし、複数のポートにアクセスします。 例: -p 80:80 -p 81:81 アドレス81が存在する場合は、ポート80のアドレスに直接アクセスします。 誤解: 最初はクッキーを更新したのでクッキーの問題だと思った (クッキーはポート番号を区別しない) ついに理由が分かりました: リダイレクトの問題。ログアウトするとログインページにリダイレクトされるからです。 解決策: nginxパラメータを設定する
なぜなら、リクエストパラメータには必ずポート番号が含まれるからです。 インターネット上には別の方法があります: proxy_redirect パラメータを変更する (ただし、試しても機能しませんでした) 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
>>: Vue のライフサイクルとフック関数の詳細な説明と典型的な面接の質問
重複キーの置換と挿入の違い置換の使用法競合がない場合、挿入と同等となり、他の列のデフォルト値が使用さ...
SQL UNIQUE制約UNIQUE 制約は、データベース テーブル内の各レコードを一意に識別します...
DOMContentLoaded イベント文字通り、DOM がロードされた後に実行されます。 win...
多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分の...
Q1: データベースにはどのようなインデックスがありますか?メリットとデメリットは何ですか? 1. ...
1. KVM の概要カーネルベースの仮想マシンの略称は、Linux 2.6.20 以降のすべての主要...
なぜこのような記事を書いたかというと、数日前の夜、仕事が終わろうとしていたときに、業務側で突然、テー...
目次1. スローログの紹介2. スローログの練習1. スローログの紹介スロー ログの正式名称はスロー...
この記事ではMySQL 8.0.11のインストールと設定方法を参考までに記録します。具体的な内容は以...
目次はじめるデータストレージサーバーを構成するRedis セキュリティの管理Redisインストールの...
MySQL はほとんどの場合、GROUP BY クエリと DISTINCT クエリを同様に処理します...
ウェブページでEnterキーを押すと、フォームは自動的に送信され、他のページに移動します。クエリフォ...
この記事では、主に Vue バックグラウンド管理システムのページング機能の実装を紹介し、次のように共...
公式ウェブサイトhttps://cli.vuejs.org/ja/ガイド/場合によっては、コンポーネ...
Vue ルーティング this.route.push ジャンプ ページが更新されない1. 背景概要:...