Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)

Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)

ここで nginx のリバース プロキシを試してみましょう。

リバースプロキシ方式とは、インターネット上の接続要求をプロキシサーバーで受け付け、内部ネットワーク上のサーバーに転送し、サーバーから取得した結果をインターネット上の接続要求元のクライアントに返す方式です。このとき、プロキシサーバーは外部からはリバースプロキシサーバーのように見えます。

私たちの Java プロジェクトでは、アクセスはポート 80 経由で行われ、Nginx がそれを受信し、Tomcat サーバーに転送して、サーバーの結果を返します。

ここで nginx.conf ファイルを変更する必要があります。

アップストリームバックエンド{
  #プロキシ IP の重みが大きいほど、受信するトラフィックが多くなります。逆に、server localhost:8084 weight=50;
  サーバー localhost:8088 重み=50;
}

受信したリクエストを転送します:

# / すべての負荷分散 + リバースプロキシの場所 / {
      ルート /data/wwwroot1;
      インデックス index.html index.htm;#index ファイル proxy_pass http://backend;
    }

このようにして、nginx へのリクエストを tomcat に割り当てて転送することができます。ここでは、負荷分散に使用される 2 つの Tomcat サーバーを定義しました。重みを設定することで、アクセス量を制御できます。

具体的な設定コードは以下のとおりです。

#ユーザーnobody;
# ワーカープロセスは通常、CPU の数 * コアの数を設定します。worker_processes 1;
 
#error_log ログ/error.log;
#error_log ログ/error.log 通知;
#error_log ログ/error.log 情報;
 
#pid ログ/nginx.pid;
 
# 接続プロパティイベントを設定する {
  worker_connections 1024;#1 人のワーカーが生成する接続の数}
 
# HTTPサーバーのメインセクションを設定します http {
  mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;
 
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  # '$status $body_bytes_sent "$http_referer" '
  # '"$http_user_agent" "$http_x_forwarded_for"';
 
  #access_log ログ/access.log メイン;
 
  ファイル送信オン;
  #tcp_nopush オン;
 
  #キープアライブタイムアウト 0;
  キープアライブタイムアウト65;
     
  #gzip 圧縮関数 gzip をオンに設定;
  gzip_min_length 1k;
  gzip_バッファ 4 16k;
  gzip_http_バージョン1.0;
  gzip_comp_レベル6;
  gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_vary オン;
   
  #負荷分散バックエンドサーバーリストを設定するアップストリームバックエンド{
    #プロキシ IP の重みが大きいほど、受信するトラフィックが多くなります。逆に、server localhost:8084 weight=50;
    サーバー localhost:8088 重み=50;
  }
   
   
   
  サーバー{
    2022を聴く;
    server_name ローカルホスト;
    文字セット utf-8;
    access_log ログ/wwwroot2.access.log メイン;
    位置 / {
      ルート /data/wwwroot2;
      インデックス index.html index.htm;#インデックスファイル}
  }
  # 仮想ホストセクションサーバー{
    聞く 80;
    server_name ローカルホスト;
    ルート /data/wwwroot1;
    文字セット utf-8;
    #アクセスログ access_log logs/wwwroot1.access.log main;
    # / すべての負荷分散 + リバースプロキシの場所 / {
      ルート /data/wwwroot1;
      インデックス index.html index.htm;#index ファイル proxy_pass http://backend;
    }
 
    エラーページ 404 /404.html;
 
    # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
    #
    エラーページ 500 502 503 504 /50x.html;
    場所 = /50x.html {
      ルートhtml;
    }
 
    # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
    #
    #場所 ~ \.php$ {
    # プロキシパス http://127.0.0.1;
    #}
 
    # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
    #
    #場所 ~ \.php$ {
    #ルートhtml;
    #fastcgi_pass 127.0.0.1:9000;
    # fastcgi_index インデックス.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    #fastcgi_params を含めます。
    #}
 
    # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
    # nginxのものと一致します
    #
    #場所 ~ /\.ht {
    # すべて拒否;
    #}
  }
 
 
  # IP、名前、ポートベースの設定を組み合わせた別の仮想ホスト
  #
  #サーバー{
  # 8000を聴く;
  # somename:8080 をリッスンします。
  # server_name somename alias another.alias;
 
  # 位置 / {
  #ルートhtml;
  # インデックス index.html index.htm;
  # }
  #}
 
 
  # HTTPS サーバー
  #
  #サーバー{
  # 443 ssl をリッスンします。
  # サーバー名 localhost;
 
  # ssl_certificate cert.pem;
  # ssl_certificate_key cert.key;
 
  # ssl_session_cache 共有:SSL:1m;
  #ssl_session_timeout 5分;
 
  # ssl_ciphers HIGH:!aNULL:!MD5;
  # ssl_prefer_server_ciphers オン;
 
  # 位置 / {
  #ルートhtml;
  # インデックス index.html index.htm;
  # }
  #}
 
}

テスト結果によると、ポート 80 のアドレスにアクセスすると、表示される結果は基本的に 50-50 になります。

ランダムアクセスも

上記の 2 つのスクリーンショットは、2 つの Tomcat サーバーのテスト ファイルに対応しています。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux システムでの nginx サーバーのインストールと負荷分散構成の詳細な説明
  • Linux で Nginx ロード バランシングを使用して複数の Tomcat を構成する方法
  • Linux で nginx ロード バランシングを構築する方法
  • Linuxシステム構成の詳細な説明 nginx ロードバランシング
  • Linux での Nginx 負荷分散構成の使用例の詳細な説明。

<<:  MySQLのファジークエリの要約

>>:  Web 開発 js 文字列連結プレースホルダーと conlose オブジェクト API の詳細な説明

推薦する

最新のmysql-5.7.21のインストールと設定方法

1. ダウンロードしたMySQLの圧縮パッケージをインストールディレクトリに解凍します。 2. 新し...

Dockerは単一のイメージを使用して複数のポートにマッピングします

必要:公式サイトのリソースサーバーは確かに1つのインスタンスでは使えず、複数のインスタンスを一緒に使...

Linux デスクトップ用に Openbox を設定する方法 (推奨)

この記事は、「24 Days of Linux Desktop」の特別シリーズの一部です。 Open...

MySQL GTID マスターとスレーブの不一致を修復するソリューション

目次解決策1: レプリカを再構築する前提条件アドバンテージ欠点手順マスター奴隷解決策2: データ修復...

ftp は SSH 経由で Linux にリモート接続します

まず Linux に ssh をインストールします。例として Centos を使用します。ポータル:...

jsを使って簡単な計算機を作る

この記事では、jsで簡単な計算機を作成する具体的なコードを参考までに共有します。具体的な内容は次のと...

HTML での Li タグの使用例

タイトルを左に、日付を右に揃えたいのですが、日付の範囲に float:right を直接追加すると、...

HTML ページでコンテンツの選択、コピー、右クリックを防止する方法の詳細な説明

時には、Web ページに掲載されているコンテンツが悪意のある人物に盗用されるのを望まないため、Web...

@media レスポンシブ CSS を使用してさまざまな画面に適応する例

定義と使用@media クエリを使用すると、さまざまなメディア タイプに異なるスタイルを定義できます...

MySQL パスワード変更方法の概要

MySQL 5.7 より前のバージョンのパスワードを変更する方法:方法1: SET PASSWORD...

自己終了XHTMLタグを書くときに注意すべきこと

XHTML の img タグはいわゆる自己終了タグであり、XML では完全に合法です。 XHTMLの...

HTML で点線の境界線を設定する方法

CSSスタイルとHTMLタグ要素を使用するさまざまな HTML タグに点線の境界線を追加するために、...

nginx のロケーションで URI の傍受を実装する方法

例:場所のルートとエイリアスルートディレクティブは、ルートによって設定されたディレクトリに検索ルート...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

なぜCSSをヘッドタグに配置する必要があるのか

考えてみてください。なぜcss 、 javascriptのようにbodyタグの末尾ではなく、 hea...