わずか 3 ステップで Docker を使用して Nginx リバース プロキシを作成する

わずか 3 ステップで Docker を使用して Nginx リバース プロキシを作成する

Web アーキテクチャでは、俊敏性とスケーラビリティが不可欠であり、最適なパフォーマンスを確保しながらサービスを管理する必要があります。

この目的を達成するには、リバース プロキシを使用できます。リバース プロキシは非常に柔軟性が高く、クライアントとサーバー間のやり取りと通信を簡素化します。

図に示すように、リバース プロキシは、さまざまな部署やエリアがある建物内の受付係のようなものです。受付担当者は顧客または訪問者を適切な部署に誘導します。彼らは訪問者の誘導、問い合わせへの対応、さまざまな部門間の分配の確保を担当します。

写真

リバース プロキシの用途は次のとおりです。

  1. スケーラビリティのための負荷分散。
  2. SSL と TLS を終了します。
  3. サブドメインを特定のパスにマップします。

この記事では、Nginx と Docker コンテナを使用してリバース プロキシを設定します。

ステップ1. アプリケーションを作成する

完全なコードをダウンロードしてください。

まず、プロキシとして機能するアプリケーションを構築します。

このアプリケーションの / エンドポイントにアクセスしたときに単純な HTML ページを表示する Docker ファイルを作成します。

 FROM nginx:stable-alpine COPY index.html /usr/share/nginx/html/index.html

index.html ファイルは次のとおりです。

 <h1>This is the main app</h1>

このアプリケーションを実行するための簡単な Docker Compose ファイルを作成します。

 version : '3.7' services : web: build: . ports: - "8080:80"

次のコマンドを実行して Docker Compose を起動します。

 docker-compose up

localhost:8080 にアクセスすると、次のように表示されます。

写真

同様の方法で、2 つの HTML ファイルと同じ Dockerfile を使用して、2 つの異なるアプリケーションを作成します。

 This is html file for app1 <h1>This is APP 1</h1> This is html file for app2 <h1>This is APP 2</h1>

Docker Compose ファイルを変更して、次の 2 つのコンテナを起動します。

 version : '3.7' services : web: build: . ports: - "8080:80" restart: always app1: build: ./app1/ ports: - "8085:80" restart: always app2: build: ./app2 ports: - "8010:80" restart: always

ポート 8085 および 8010 にアクセスすると、次の内容が表示されます。

写真

ステップ2: Nginxの設定を記述する

/app にアクセスするときに app1 と app2 の間でプロキシするように Nginx 構成ファイルを書き込み、/ エンドポイントにメイン ページのみを表示します。

Nginx の設定は次のようになります。

 worker_processes 1; ## Default: 1 worker_rlimit_nofile 8192; http { upstream cloud_server_com { server app1:80; server app2:80; } server { listen 80; location /app/ { proxy_pass http://cloud_server_com/; } location / { root /usr/share/nginx/html; index index.html; } } }

構成ファイルは、グループ化されたサーバーのグループを定義します。ここでは、Docker Compose ファイルで定義されているコンテナ名とポート番号を指定します。

場所は、Nginx が特定のエンドポイントへのリクエストを処理する方法を定義するのに役立ちます。 /app/ は、両方のアプリケーションのコンテナである cloud_server_com アップストリームにリクエストを送信します。

proxy_pass はリクエストがリダイレクトされる場所を決定します。

ここで、Docker Compose ファイルはこの構成を読み取ることができる必要があるため、Compose ファイルを次のように変更する必要があります。

 version : '3.7' services : web: build: . ports: - "8080:80" volumes: - ./config/nginx.conf:/etc/nginx/nginx.conf restart: always app1: build: ./app1/ ports: - "8085:80" restart: always app2: build: ./app2 ports: - "8010:80" restart: always

ステップ3: コンテナを実行する

docker-compose up コマンドを実行し、ブラウザでリバース プロキシがどのように動作するかを確認します。

これは / エンドポイントで実行されているメイン アプリケーションです。

写真

ただし、/app/ エンドポイントにアクセスすると、2 つの異なるサーバーが返され、プロキシはリクエストを app1 と app2 に 1 つずつ送信します。

写真

<<:  クラウドコンピューティング環境はネットワークの可視性に課題をもたらす

>>:  Dockerはどのように機能しますか?知っていましたか?

推薦する

Aoyou Hosting: ドイツ CN2 シリーズ VPS、Windows 付き、25% オフ プロモーション、ドイツ CN2 評価データ付き

Aoyou ホストに新しい製品があります: ドイツ CN2、ヨーロッパ電気通信センター、ドイツ フラ...

onetechcloud: 月額27元から、米国ネイティブIP + デュアルISPクラスIP(CN2 GIA/CUII/AS4837直接接続)、香港CN2/香港BGP大帯域幅

onetechcloudは、主に米国と香港のデータセンターを中心にVPS/クラウドサーバー事業を展開...

launchvps-$3.2/KVM/1G メモリ/20gSSD/1T トラフィック/ロサンゼルス/quadranet

launchvps は、新しいデータ センターを追加しました。quadranet のロサンゼルスで、...

Alibaba ビッグデータ クラウドネイティブプラクティス、EMR Spark on ACK 製品紹介

1. クラウドネイティブの課題とAlibabaの実践ビッグデータ技術開発動向クラウドネイティブの課題...

実用的なヒント付き Google AMP 完全ガイド

AMPとはAMP は、正式名称を Accelerated Mobile Pages といい、Goog...

検索エンジンのアルゴリズムはキーワードのランキングが不安定であると判断する

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています最近、Xi...

検討に値するオープンソースのクラウド プラットフォームとツール

現在、多くのパブリック クラウド戦略は完全に独自のプラットフォームとサービスに依存しており、主要なパ...

おすすめ: Bluehost - 年間 12 ドル - 感謝祭/ブラックフライデー/サイバーマンデー

Bluehost は現在、米国最大の仮想ホスティング会社です。10 年以上の歴史があり、EIG コン...

簡単な議論: 特殊車両ウェブサイトのユーザーエクスペリエンスを向上させる方法

昨日は工場の電気がなかったので、今日は出勤に回ったので、昨日Niziが書いた記事は見ていません。昨日...

SEOを学ぶ正しい方法はBaiduから学ぶことです

SEOの学習方法については、SEOを独学する+SEO研修に参加するという2つの方法しかないことは以前...

ウェブサイト最適化ナビゲーション

SEO に対する考え方は人それぞれです。SEO 担当者の間でも、学習経験や接するサイトの種類、その他...

仮想Kubernetesクラスターを実装する際の重要な考慮事項

Kubernetes のコンテキストでは、マルチテナンシーとは、開発やテストなどの環境で複数のチーム...

2019年のソーシャルメディアフィード広告のトレンド

近年、情報フロー広告市場は熾烈な競争を繰り広げており、インターネット大手も中小企業もトラフィック獲得...

Apple App StoreがXcodeGhostに感染したアプリを削除

最近、多くのiOSアプリケーションがウイルスに感染しています。これは、開発者がサードパーティのチャネ...

ウェブサイトのタイトルを変更すると、本当にランキングに影響しますか?

ほとんどのウェブマスターは、Baidu がウェブサイトのタイトルと説明に非常に敏感であることを知って...