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 の垂直テーブルを水平テーブルに変換する方法と最適化のチュートリアル

推薦する

さまざまなブラウザに対応するためにCSSで指定フォント@font-faceを導入する際の問題

Web ページを作成するときに、特定のフォントを使用したい場合は、 @font-faceを介して参照...

Linux の cut コマンドの説明

Linux や Unix の cut コマンドは、ファイルの各行から一部を切り取って標準出力に出力す...

Dockerfile を使用して Node.js サービスをデプロイする方法

Dockerfileを初期化するプロジェクトの名前が express であると仮定して、expres...

MySQLで重複データを削除する詳細な例

MySQLで重複データを削除する詳細な例重複レコードには 2 つの意味があります。1 つは完全に重複...

Tencent Cloud で HTTPS を無料で導入する方法

最近、WeChatアプレットを書いていたとき、WeChatアプレットではすべてのリクエストインターフ...

仮想マシンを作成し、VMware に Redhat Linux オペレーティング システムをインストールする (グラフィック チュートリアル)

VMware で仮想マシンを作成し、Redhat Linux オペレーティング システムをインスト...

MySQL学習記録: KEYパーティションが引き起こした血なまぐさい事件

需要背景ビジネス テーブル tb_image のデータの一部は次のとおりです。id は一意ですが、i...

Nginx 7層負荷分散のいくつかのスケジューリングアルゴリズムの簡単な理解

この記事は主に、Nginx 7 層負荷分散のいくつかのスケジューリング アルゴリズムを紹介します。こ...

Vue プロジェクトで TypeScript クラスを適用する方法

目次1. はじめに2. 使用1. @コンポーネント2. 計算、データ、方法3. @props 4. ...

Vue での ElementUI の使用に関する詳細な説明

ログイン + セッションストレージエフェクト表示ログインに成功すると、ユーザー ID がフロントエン...

NodeはMySQLに接続し、追加、削除、変更、チェックのための実装コードをカプセル化します。

目次ノードはMysqlに接続しますMySQLモジュールをインストールするMySQLに接続するよく使わ...

vscode で console.log を書く 2 つの簡単な方法の詳細な説明

(I) 方法 1: 事前にスクリプト タグ内に直接定義します。この HTML ファイルにのみ適用され...

MySQLで自動作成時間と変更時間を設定する方法の例

この記事では、MySQL の自動作成時刻と変更時刻を設定する方法について説明します。ご参考までに、詳...

MySQL交換パーティションの詳細な例

MySQL交換パーティションの詳細な例序文exchange パーティションを紹介する前に、まず my...

Linuxグループの基礎知識ポイントまとめ

1. Linuxグループの基本紹介Linux では、すべてのユーザーはグループに所属する必要があり、...