Nginx サービス クイック スタート チュートリアル

Nginx サービス クイック スタート チュートリアル

1. Nginx の紹介

1. Nginx とは何ですか?

  • Nginx (エンジン x) は、IMAP/POP3/SMTP サービスも提供する高性能 HTTP およびリバース プロキシ Web サーバーです。
  • その特徴は、メモリの占有量が少なく、強力な同時実行機能を備えていることです。実際、nginx の同時実行機能は、同じタイプの Web サーバー間でより優れたパフォーマンスを発揮します。

2. Nginx を使用する理由

今日のインターネットの急速な発展により、シングルポイント サーバーでは、数万、あるいは数十万のユーザーからの継続的なアクセスをサポートできなくなっています。たとえば、理想的な条件下では、Tomcat サーバーは約 2,000 件の同時リクエストしか処理できません。この問題を解決するには、負荷分散のために複数の Tomcat サーバーが必要です。

では、負荷分散はどのように実現すればよいのでしょうか? Nginx はソリューションの 1 つです。ユーザーが Web サイトにアクセスすると、Nginx はアクセス要求をインターセプトし、ポーリングを通じてさまざまなサーバーに均等に分散します。

さらに、Nginx には ip_hash 戦略があり、ユーザーの実際の IP を取得し、ハッシュ値を計算してサーバーを選択できます。これも優れた負荷分散方法です。 したがって、Nginx を習得することは、Web 開発の学習過程において不可欠な部分となっています。

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

フォワード プロキシとは、クライアントが最初にプロキシ サーバーに要求を送信し、次にプロキシ サーバーがその要求をサーバーに転送することを意味します。私たちがよく使うVPNはプロキシサーバーです。海外のウェブサイトに接続するには、クライアントが外部ネットワークに接続できるサーバーをプロキシとして利用する必要があり、クライアントはプロキシサーバーに接続することができます。

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

リバース プロキシはフォワード プロキシとは異なります。フォワード プロキシはクライアントのプロキシとして機能し、リバース プロキシはサーバーのプロキシとして機能します。複数のサーバーが分散されている場合、クライアントが IP アドレスを通じて同じ Web サイトにアクセスできるようにするには、リバース プロキシが必要です。

リバース プロキシの動作メカニズムを理解したら、Nginx の学習を開始できます。

2. LinuxでのNginxのインストール

Nginx は Web サーバーで広く使用されているため、このチュートリアルではデモとして Centos サーバーのバージョン 7.4 を選択します。

1. ダウンロード

公式ダウンロード ページ (http://nginx.org/en/download.html) にアクセスし、安定バージョンを選択してダウンロードし、サーバーにアップロードします。

2. インストール

tarパッケージをサーバーにアップロードした後、現在のディレクトリに解凍します。

tar -zxvf nginx-1.18.0.tar.gz -C ./

解凍したディレクトリに入り、configureスクリプトを実行します。

nginx-1.18.0/をインストールします
./configure

makeコマンドを使用してインストールする

作成 && インストール

インストールが完了したら、whereis コマンドを使用して Nginx のインストール場所を見つけます (デフォルトでは /user/local/ ディレクトリにインストールされます)。

nginxはどこにある?

インストール ディレクトリの下の bin フォルダーに入り、nginx サービスを開始し、サーバーのデフォルト ポート 80 にアクセスして、インストールが成功したかどうかを確認します。

3. Nginx 設定の開始

1. 設定ファイル

Nginx インストール ディレクトリに conf フォルダーがあります。その中の nginx.conf ファイルを開きます。

cd conf/ && vim nginx.conf 

2. 単一サーバーのリバースプロキシ

では、リバース プロキシに Nginx を使用するにはどうすればよいでしょうか?

location パラメータに proxy_pass フィールドを追加し、リバース プロキシを必要とするサーバー アドレスとポート番号を入力します。

注意: 設定の各行はタイトルで終わる必要があります。 ! !

#リスニングディレクトリを次のように設定します: /
位置 / {
	ルートhtml;
	インデックス index.html index.htm;
	proxy_pass http://127.0.0.1:8080; # ローカルマシンのポート 8080 のリバースプロキシ # proxy_pass http://127.0.0.1:8081; # 複数の proxy_pass を同時に設定できます。ローカルマシンのポート 8081 のリバースプロキシ}

3. 複数のサーバーをリバースプロキシする

サーバーが複数ある場合はどうなりますか? proxy_pass パラメータを継続的に追加することに加えて、アップストリーム サーバー グループを構成することがより良い解決策です。

設定ファイルの http ブロックにアップストリーム属性を追加します。

# helloという名前のサーバーグループを設定します
アップストリームこんにちは{
	# 1 つのサーバーは 1 つのサーバーに対応します。もちろん、異なるポートを持つ Web プログラムにすることもできます。server 127.0.0.1:8080;
	サーバー 127.0.0.1:8081;
}
# ロケーションブロック内のリバースプロキシをサーバーグループのロケーション/{に変更します
	ルートhtml;
	インデックス index.html index.htm;
	proxy_pass http://hello; # hello サーバー グループ内のすべてのサーバーをリバース プロキシします}

4. テストを実行する

1. サービスを開始する

設定が完了したら、Nginx インストール ディレクトリの下の sbin フォルダーに移動し、nginx プログラムを実行します。

ローカル

以前に起動したことがある場合は、nginx サービスをシャットダウンする必要はなく、nginx に設定ファイルを再読み込みさせるだけです。

nginx -s リロード

ブラウザを更新します。リバース プロキシが成功すると、アクセスされたパスが構成ファイル内のサーバー アドレスに自動的にマップされます。

将来、ユーザー数が増えていくと、新しいサーバーを追加する必要が生じる可能性があります。このとき、nginx サーバーをシャットダウンせずに、設定ファイルを変更し、nginx -s reload コマンドを使用するだけで済みます。

2. サービスをシャットダウンする

nginx サービスをシャットダウンするには、通常 2 つの方法があります。

nginx -s stop # 動作しているかどうかに関係なく、すぐに停止します nginx -s quit # プロセスが現在の作業を完了するまで待機し、安全に終了します

5. 負荷分散

1. 負荷分散とは何ですか?

サーバーごとに構成が異なるため、高性能サーバーにより多くのリクエストを割り当てられるように、負荷分散の概念が導入されました。

前述のように、Nginx には、加重ラウンドロビン (デフォルト)、IP ハッシュ、URL ハッシュなど、多くの負荷分散方法があります。ここでは、加重ラウンドロビンを紹介します。

加重ラウンドロビンとは、サーバーに重み値を追加することで、Nginx が重みに基づいてリクエストを分散することを意味します。重みが高いほど、受信するリクエストの数が多くなり、逆もまた同様です。

上図では、3 台のサーバーが構成されています。重み付けポーリング モードでは、6 つの異なるリクエストのうち、重みが 3 のサーバーには 3 つのリクエストが、重みが 2 のサーバーには 2 つのリクエストが、重みが 1 のサーバーには 1 つのリクエストが割り当てられます。負荷分散により、同時実行性の高い環境でのサーバーダウンタイムのリスクが大幅に軽減されます。

2. Nginxのロードバランシングを設定する

同様に、nginx.conf ファイルを開いて設定します。

vim nginx.conf

上流ブロックに重みパラメータを追加します。

アップストリームこんにちは{
	server server1:8080 weight=3; # server1の重みを3に設定する
	server server2:8080 weight=1; # server2の重みを1に設定する
}

追加後、nginx -s reload! を実行してください。

上記は、Nginx サービスのクイックスタートチュートリアルの詳細な内容です。nginx 入門チュートリアルの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • nginx 基本チュートリアル
  • Nginx 設定入門チュートリアル
  • Windows での nginx HTTP サーバーの入門チュートリアル
  • Nginx ロードバランシングとは何か、そしてそれをどのように設定するか
  • Nginx 最適化サービスで Web ページ圧縮を実装する方法
  • nginx を最適化する 6 つの方法
  • Nginx がフロントエンド リソースへのクロスドメイン アクセスの問題をどのように解決するかの詳細な説明
  • proxy_pass を設定した後に Nginx が 404 を返す問題を解決する
  • Nginx をベースに特定の IP への短期アクセス数を制限する
  • Nginx の構成と HTTP 実装コード分析との互換性

<<:  Vueのシンプルストアの詳しい説明

>>:  W3C チュートリアル (5): W3C XML アクティビティ

推薦する

測定画像HTTPリクエスト

一般的なブラウザでテスト ページを開き、Fiddler で http リクエストを表示してください。...

CentOS 7.x のマスターおよびスレーブ DNS サーバーの展開

1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...

MySQLクエリ速度を最適化する方法

前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...

純粋な CSS を使用して 3D 回転効果を実装するサンプル コード

3D効果を実現するには、主にCSSのpreserve-3dプロパティとperspectiveプロパテ...

Reactのコンポーネント共同利用実装

目次ネスティング親子コンポーネント通信ブラザーコンポーネント通信撤回するReact の Linked...

MySQLで指定した時間前にレコードを自動的に削除する方法

イベントについて: MySQL 5.1 では、イベントの概念が導入され始めました。イベントは「時間ト...

Vue は Websocket カスタマー サービス チャット機能を実装します

この記事では主に基本的なチャットの実装方法を紹介します。今後は絵文字や写真のアップロードなどの機能も...

HTML における DOM 要素のスクロールバースクロール制御の詳細な説明

dom要素に新しい子要素を追加し、新しく追加された新しい要素がコンテナーのスコープを超えた場合は、次...

ウェブページのコピー防止機能の実装方法(クラッキング手法付き)

ソース ファイルを右クリックすると、次のコードが見つかります。 1. CSSを使用してFirefox...

MySQLのCOUNT(*)のパフォーマンスについてお話しましょう

序文基本的に、職場のプログラマーは、count(*)、count(1)、または count(prim...

Apache FlinkCEP でタイムアウトステータス監視を実装するための詳細な手順

CEP - 複合イベント処理。ご注文後、一定期間内にお支払いの確認が取れませんでした。タクシーの配...

HTMLチェックボックス説明テキストをクリックして状態を選択/チェック解除します

Web 開発では、チェックボックスは小さく、ユーザーにとって操作があまり便利ではないため、ユーザーが...

Docker の 4 つのネットワーク タイプの主な例

4 つのネットワーク タイプ:なし: コンテナのネットワーク機能を一切設定しません。--net=no...

ミニプログラムはミニプログラムクラウドを使用してWeChatの支払い機能を実装します

目次1. WeChat Payを開く1.1 アフィリエイト加盟店番号1.2 加盟店番号を追加する1....

HTML テーブル マークアップ チュートリアル (41): テーブル ヘッダーの幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、ヘッダーの幅と高さはコンテンツに応じて自動的に調整されます。ヘッダーの幅と高さを手動...