nginx にはフォワードプロキシ、リバースプロキシ、ロードバランシング、透過プロキシなど多くの機能がありますが、一般的にはリバースプロキシがよく使われます。負荷分散。これらの操作を完了するには、構成ファイルをローカルで同期するだけで済みます。 nginx 構成ファイルを作成するには、まず /etc/nginx/ ディレクトリに nginx.conf という名前の新しいファイルを作成する必要があります。
nginx1 ディレクトリにも nginx.conf が必要です。 、コンテンツを空のままにしておきます。次に、イメージが正常かどうかを確認します。
#イメージをまだダウンロードしていない場合は、次のコマンドを使用してイメージをプルします (デフォルトは最新バージョンです)。 ##
docker pull nginx
docker run -itd -p 80:80 --name nginx001 -v /docker/nginx1/nginx.conf:/etc/nginx/nginx.conf nginx
実行中のコンテナーを確認します。
nginx001 が表示されない場合は、実行中にエラーが発生した可能性があります。エラー メッセージを見てみましょう:
これはおそらく、イベント ノードが構成ファイル内に見つからなかったことを意味します。作成したファイルの中身は空なので、コンテナを起動すると該当ディレクトリのnginx.confがnginx001のnginx.confに直接マッピングされることになりますが、当然ながら空の設定のnginxは実行できません。
今、vi は nginx.conf をローカルに作成し、構成を開始します。単純な .net core プログラムを docker にデプロイする前に、ローカル ポート 1500 を占有して、今、私は指定されたドメイン名のプログラムにnginxリバースプロキシを使用し、ポート80経由でアクセスします。構成ファイルが書き込まれた後、コンテナー nginx001 を再起動します:
#これで、nginx001 は正常に開始されました。指定したドメイン名にアクセスしてみましょう:
#nginx 設定が有効になりました。
最後に、docker を再起動すると構成が初期化されるかどうかを確認してみましょう。docker を再起動します:
2 つのコンテナを起動します:
訪問ページ:
Docker の再起動後にデータベースが初期化されていないため、データ ボリュームは正常に適用されました。将来的には、Docker のクラッシュやデータ損失を恐れることはなくなります。
補足
nginx 構成ファイルの proxy_pass 属性は、非 docker 環境で構成されている場合、localhost または 127.0.0.1 が通常どおり有効になりますが、docker では nginx コンテナーは次のように構成されます。 localhost または 127.0。0.1 には、実際のリバース プロキシの完了を妨げる小さな穴がありました。コンテナーの実行中、docker はコンテナーに別の IP とポートを割り当て、docker が占有する IP をコンテナーの IP にマッピングするためです (たとえば、docker で mysql が開始された後、localhost を使用してクライアントにログインできます) )。ただし、nginx が起動すると、最初に構成ファイルが読み取られ、構成が正しい場合にのみ実行されるため、コンテナーが正常に実行された後、docker はローカル IP をコンテナーにマッピングします。コンテナのIPを使用して直接アクセスする場合のみ、設定ファイルにlocalhostまたは127.0.0.1が記述されている場合、リバースプロキシがトリガーされます。サーバー上で Docker を使用して Nginx を構成する場合、サーバーの IP アドレスを入力するだけで構成を完了できます。以上がDocker を使用してボリュームをマウントし、Nginx をデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。