nginxの基礎を学ぶ

nginxの基礎を学ぶ

1. nginx とは何ですか?

nginx は、メモリをほとんど消費せず、強力な同時実行性を備えた高性能な http およびリバース プロキシ Web サーバーです。 nginx は最大 50,000 の同時接続に達することができるという報告があります。

2. nginx で何ができるのか?

  • リバースプロキシ
  • 負荷分散
  • 静的と動的の分離
  • 高可用性クラスタ

2.1 フォワードプロキシとは何ですか?

クライアント (ブラウザ) はプロキシ サーバーを設定し、プロキシ サーバーを介してインターネットにアクセスします。

2.2 リバースプロキシとは何ですか?

クライアントはリバース プロキシ サーバーに要求を送信し、リバース プロキシ サーバーはデータを取得してクライアントに返します。

画像の説明を追加してください

2.3 負荷分散

クライアントはサーバーに複数のリクエストを送信します。サーバーはリクエストを処理し、一部のデータを取得するためにデータベースとやり取りする必要があります。サーバーは処理を完了すると、結果をクライアントに返します。

画像の説明を追加してください

単一のサーバーで問題を解決できない場合は、サーバークラスターを構築して

画像の説明を追加してください

2.4 静的と動的の分離

ウェブサイトの解析速度を向上させるために、動的ページと静的ページは異なるサーバーによって解析され、元の単一サーバーへの負荷が軽減されます。

画像の説明を追加してください

3. nginxの基本操作

1. 使用する前に、nginxディレクトリに入ります
2. nginxのバージョン番号を確認する

./nginx -v

3. nginxを起動する

./nginx

4. nginxをシャットダウンする

./nginx -s 停止

5. nginxをリロードする

./nginx -s リロード

6. nginxのステータスを確認する

ps -ef | grep nginx

3.1 nginx 設定ファイル nginx/conf/nginx.conf

1. グローバルブロック

構成ファイルからイベント ブロックへのコンテンツ。

2. イベントブロック

events ブロック ディレクティブは、主に nginx サーバーとユーザー間のネットワーク接続に影響します。ワーカー接続でサポートされる接続の最大数は 1024 です。

3.httpブロック

3.2 ファイアウォール設定

// 開いているポート番号を表示するfirewall-cmd --list-all

// 開いているポート番号を設定します。firewall-cmd --add-service=http –permanent // ファイアウォールで http サービスを永続的に開きます。firewall-cmd --add-port=80/tcp --permanent // ファイアウォールでポート 80 を永続的に開きます。// ファイアウォールを再起動します。firewall-cmd –reload

IV. リバースプロキシの実装例

4.1.Nginxリバースプロキシ実装例1

効果: アドレスを入力してTomcatのホームページにジャンプします

Nginxはリバースプロキシを設定し、主にproxy_pass設定を通じてリクエストを転送します。

1. Hostsファイルのドメイン名の設定

Windows システムのホスト ファイル (C ドライブの Windods/System32/driver/etc/hosts) でドメイン名と IP の対応を設定します。

画像の説明を追加してください

2. nginxでのリクエスト転送の設定(リバースプロキシ設定) nginx.conf

主に server_name と proxy_pass の設定を変更します。

  • server_name: ホストIP
  • proxy_pass: nginx プロキシアドレス

画像の説明を追加してください

テスト成功

画像の説明を追加してください

4.2Nginxリバースプロキシ実装事例2

nginxリバースプロキシを使用して、アクセスパスに応じて異なるサービスポートにジャンプします。nginxのリスニングポートは9001です。

1. 準備

tomcat 8080をデプロイする

tomcat8081をデプロイする

Tomcat のデフォルトのポート番号は 8080 であるため、Tomcat のポート番号を設定する場合は、server.xml でいくつかのポートを変更して Tomcat を起動する必要があります。

2 つの tomcat ファイルで webapps を見つけ、そのディレクトリに edu と vod の 2 つのファイルを作成し、その中に html ページを配置して、ページに正常にアクセスできるかどうかをテストします。

2. nginx設定ファイルnginx.confを見つける

サーバー{
    9001を聴く;
    サーバー名 192.168.25.101;

    場所 ~ /edu/ {
        プロキシパス http://127.0.0.1:8080;
    }

    場所 ~ /vod/ {
        プロキシパス http://127.0.0.1:8081;
    }
}   

3. アクセスポート8080 8081 9001を開きます。そうしないとアクセスできなくなります。

4. nginxを再起動してテストする

画像の説明を追加してください

画像の説明を追加してください

5. 負荷分散の実装例

1. 成果を達成する

ブラウザのアドレスに http://192.168.17.129/edu/a.html と入力すると、負荷分散効果がポート 8080 と 8081 に均等に分散されます。

2. 準備

1. tomcat 8080をデプロイし、tomcat 8081をデプロイする

2. 2つのTomcatのWebappsディレクトリにeduという名前のフォルダを作成し、そのフォルダにテスト用の2つのページa.htmlを作成します。

3. nginx設定ファイルで対応する設定を行い、httpで設定します。

アップストリーム myserver{
    //サーバー名を追加します server 192.168.17.129;8080;
    サーバー 192.168.17.129;8081;
}

画像の説明を追加してください

次に、サーバーとロケーションを設定します。

サーバー名 192.168.17.129:
位置 /{
    proxy_pass http://myserver;
}

画像の説明を追加してください

5.1nginx 負荷分散戦略

  • ポーリング(デフォルト)

各リクエストは時系列順に異なるバックエンド サーバーに割り当てられます。バックエンド サーバーがダウンした場合は、自動的に削除されます。

  • 重さ

重みは重みを表します。デフォルト値は1です。重みが高いほど、割り当てられるクライアントの数が多くなります。

使用:

アップストリーム myserver{
    //サーバー名を追加します。サーバー 192.168.17.129;8080 重み =10;
    サーバー 192.168.17.129;8081 重み = 20;
}
  • ip_ハッシュ

各リクエストはアクセスIPのハッシュ結果に従って割り当てられ、固定バックエンドサーバーへの後続のアクセスが可能になります。

  • 公平

応答時間に基づいて割り当てます。

アップストリーム myserver{
    //サーバー名を追加します server 192.168.17.129;8080;
    サーバー 192.168.17.129;8081;
    公平;
}

6. nginx の動的および静的分離

6.1 実装プロセス

異なるリクエスト転送を実現するには、場所ごとに異なるサフィックスを指定します。 expires パラメータを設定することで、ブラウザ キャッシュの有効期限を設定し、サーバーとサーバー間のリクエストとトラフィックを削減できます。

6.2 例

1. 静的リソースを準備する

2. 具体的な構成

  • 1. nginx設定ファイルでnginx/confを設定する

画像の説明を追加してください

  • 2. URLを入力してアクセスする

7. Nginx 構成の高可用性

7.1 Nginx の高可用性とは何ですか?

画像の説明を追加してください

図からわかるように、従来の動作モードでは、nginx が 1 つしかない場合、ユーザーのリクエストは nginx を介して異なる tomcat に転送されます。 nginx の 1 つがダウンすると、サービス転送が失敗します。 そのため、nginx クラスターを構築することで、メイン サーバーの nginx がダウンしたときに、バックアップ サーバーの ngnix がユーザーのリクエストを tomcat に再転送し、高可用性を確保します。

7.2. Nginx 構成の高可用性の準備

  • 2台のサーバー192.168.17.129と192.268.17.131を準備する
  • 両方のサーバーにnginxをインストールする
  • 仮想アドレスの設定
  • yumを介して両方のサーバーにkeepalivedを直接インストールします。
yum インストール キープアライブ -y

7.3 高可用性構成

キープアライブ設定を完了し、キープアライブ設定ファイルkeepalive.confを見つけます。

(1)/etc/keepalived/keepalivec.conf設定ファイルを変更する

グローバル定義 {
	通知メール{
	メールアドレス
	フェイルオーバー@firewall.loc
	[email protected]
	}
	通知メール送信者 [email protected]
	SMTPサーバー 192.168.17.129
	SMTP_接続タイムアウト 30
	ルータID LVS_DEVEL
}

vrrp_script chk_http_port {
	スクリプト "/usr/local/src/nginx_check.sh"
	間隔 2 # (検出スクリプトの実行間隔)
	重量2
}

vrrp_インスタンス VI_1 {
	state BACKUP # バックアップサーバでMASTERをBACKUPに変更する
	interface ens33 //ネットワークカード virtual_router_id 51 # マスターマシンとバックアップマシンの virtual_router_id は同じである必要があります priority 90 # マスターマシンとバックアップマシンの優先度は異なります。マスターの値は大きく、バックアップの値は小さくなります advert_int 1
	認証
		認証タイプ PASS
		認証パスワード 1111
	}
	仮想IPアドレス{
		192.168.17.50 // VRRP H 仮想アドレス }
}

(2)/usr/local/srcに検出スクリプトを追加する

A=`ps -C nginx –no-header |wc -l`
[ $A -eq 0 ]の場合
	ローカル
	睡眠2
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
		キルオールキープアライブ
	フィ
フィ

(3)両サーバーでnginxとkeepalivedを起動します。nginxを起動します:./nginx
keepalived を起動します: systemctl start keepalived.service

7.4 テスト

1). ブラウザアドレスに仮想IPアドレスを入力します: 192.168.17.50

直接アクセスできます

2) メインサーバーのnginxとkeepalivedが停止している場合でも、仮想アドレスを再度入力するとページにアクセスできます。

8. nginxの動作原理

マスターとワーカー

画像の説明を追加してください

8.1. 1人のマスターと複数のワーカーには利点がある

  • 各ワーカープロセスごとに独立したプロセスをロックする必要がないため、ロックによって発生するオーバーヘッドが節約されます。同時に、プログラミングや問題の検出時に非常に便利になります。nginx –s reload hot deploy を使用して、ホットデプロイメント操作に nginx を使用できます。
  • 各ワーカーは独立したプロセスです。ワーカーの 1 つに問題が発生した場合、他のワーカーは独立して競合を続け、サービスの中断を引き起こすことなく要求プロセスを実行します。

8.2 ワーカーは何人設定すればよいですか?

  • ワーカーの数がサーバー上の CPU の数と等しくなるのが最も適切です。 (例: コンピューターに 4 つのコアがある場合は、ワーカーを 4 つ設定すれば十分です。8 つのコアがある場合は、ワーカーを 8 つ設定すれば十分です)

8.3. 接続数worker_connection

まず、リクエストの送信によってワーカーの接続がいくつ占有されるか?
回答: 2 または 4 2 番目の質問: nginx には 1 つのマスターと 4 つのワーカーがあります。各ワーカーは最大 1024 の接続をサポートします。サポートされる同時接続の最大数はいくつですか?

  • 同時静的アクセスの最大数は、worker_connections * worker_processes / 2 です。
  • HTTP をリバース プロキシとして使用する場合、同時接続の最大数は worker_connections * worker_processes/4 にする必要があります。

nginx の基礎を学ぶこの記事はこれで終わりです。より関連性の高い nginx の基本コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx の realip モジュールの使い方の基礎学習
  • Nginx レベルで基本的なユーザー認証を構成する手順を完了します。
  • Nginxの基本についての簡単な紹介
  • Nginx の基本 - Gzip 設定ガイド
  • Nginx サーバーの基本的なセキュリティ構成といくつかのセキュリティのヒント
  • nginxの基本設定の説明

<<:  Web デザインにおける Less と More について語る (写真)

>>:  MySQL の垂直テーブルを水平テーブルに変換する方法と最適化のチュートリアル

推薦する

発生したブラウザの互換性の問題と解決策(推奨)について

序文:先週の日曜日、先輩から3ページ作るのを手伝って欲しいと頼まれました。データのやり取りなどはなく...

音楽プレーヤーアプリ(アプリケーションソフトウェア)の分析と再設計 美しい音楽プレーヤーインターフェースの設計方法

無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...

一般的な docker コマンドの概要 (推奨)

1. 要約:一般的に、次のカテゴリに分類できます。 Docker 環境情報 — docker [i...

Docker JVM メモリ使用量の表示

1. Docker コンテナのホスト マシンに入り、指定されたイメージを実行しているコンテナ ID ...

HTML いくつかの特別な分割線効果

1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...

Nginx proxy_pass の / スラッシュによって引き起こされた殺人事件の詳細な説明

背景nginx サーバー モジュールは 2 つのサーバーにプロキシする必要があるため、異なるサーバー...

Vue のライフサイクルとフック関数の詳細な説明と典型的な面接の質問

目次1. Vue ライフサイクル2. フック機能2.1 4つの段階と8つの方法に分かれています。 2...

MySQL タイムブラインドインジェクションの 5 つの遅延方法

MySQL タイム ブラインド インジェクションの 5 つの遅延方法 (PWNHUB の予期しない解...

VueプロジェクトにPWAを導入する手順

目次1. 依存関係をインストールする2. vue.config.js ファイルで pwa を設定しま...

ネイティブJSは非常に見栄えの良いカウンターを実装します

今日は、ネイティブ JS で実装された見栄えの良いカウンターを紹介します。効果は次のとおりです。 以...

MySQL における冗長インデックスと重複インデックスの違い

MySQL では、1 つの列に複数のインデックスを作成できます。意図的であるかどうかにかかわらず、M...

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...

CSSは座席選択効果を実現するためにautoflow属性を使用する

1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...

MySQLの左結合と内部結合について簡単に説明します

序文最近、X 省のコールド チェーン トレーサビリティ システムの開発で忙しくしています。毎日午後 ...

MySQLで負荷分散を実装する方法

序文MySQL は、クライアント/サーバー構造に基づく、高速、高性能、マルチスレッドのオープン ソー...