Nginx チュートリアルのメモ (静的リソース、リバース プロキシ、ロード バランシング)

ダークホースビデオレッスンノート。プロジェクト最適化 Day2-09-Nginx command_哔哩哔哩_bilibili

ディレクトリ Nginx のダウンロードとインストール

Nginxコマンド

Nginx設定ファイルの構造

Nginxの具体的な用途

静的リソースをデプロイする

リバースプロキシ

ロードバランシング   Springboot プロジェクトの実際のデプロイメント

Nginxの概要

Nginx は、軽量の Web サーバー/リバース プロキシ サーバーおよび電子メール (IMAP/POP3) プロキシ サーバーです。nginx は、少ないメモリと強力な同時実行機能が特徴です。実際、nginx の同時実行機能は、同じ種類の他の Web サーバーよりも優れています。中国本土で nginx を使用している Web サイトには、Baidu、Jingdong、Sina、NetEase、Tencent、Taobao、等

Nginx は、ロシアで 2 番目にアクセス数の多い Rambler.ru サイト (ロシア語: Paw6nep) のために Igor Sysoyev によって開発され、最初の公開バージョン 0.1.e は 2004 年 10 月 4 日にリリースされました。

公式ウェブサイト:  nginx ニュース

Nginxのダウンロードとインストール

Nginx 公式 Web サイトにアクセスして、Nginx インストール パッケージをダウンロードできます。アドレスは次のとおりです:  nginx: download

インストールプロセス:
1. 依存パッケージをインストールします yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

2. Nginx インストール パッケージ wget をダウンロードします https://nginx.org/download/nginx-1.16.1.tar.gz (最初に yum install wget が必要です)

3. tar -zxvf nginx-1.16.1.tar.gz を解凍します。

4、cd nginx-1.16.1

5、./configure --prefix=/usr/local/nginx

6、メイク&&メイクインストール

Nginxのディレクトリ構造

Nginx をインストールしたら、次の図に示すように、Nginx のディレクトリ構造を理解しましょう。

主要なディレクトリ/ファイル:

  • conf/nginx.conf nginx 設定ファイル
  • html は
    静的ファイル (html、css、Js など) を保存します。
  • ログ ログ
    ディレクトリ、ログ ファイルの保存
  • sbin/nginx
    バイナリ ファイルは、Nginx サービスの開始と停止に使用されます。

Nginxコマンド

バージョンを見る

sbin ディレクトリに入ります./nginx -v

構成ファイルが正しいかどうかを確認する

Nginx サービスを開始する前に、次のコマンドで conf/nginx.conf ファイルの設定に誤りがないか確認できます。

./nginx -t

開始と停止

sbin ディレクトリ内。

次のコマンドを使用して Nginx サービスを開始します。./nginx

Nginx サービスを停止するには、次のコマンドを使用します。./nginx -s stop

起動が完了すると、Nginx プロセスを表示できます。ps -ef | grep nginx

実行中のプロセスの数を変更します。
vim usr/local/nginx/conf/nginx.conf

worker_processes  2;

設定ファイルをリロードする

プロファイル ファイルを変更することで環境変数を構成でき、/ディレクトリ内の nginx コマンドを直接使用できます。

vim など/プロファイル

PATH=/usr/local/nginx/sbin:$JAVA_HOME/bin:$PATH

設定ファイルを有効にします。source /etc/profile

Nginx を再起動します。nginx -s reload

Nginx を停止します。nginx -s stop

Nginx を起動します。nginx

Nginx設定ファイルの構造

全体構造の紹介

Nginx 設定ファイル (conf/nginx.conf) は、全体として 3 つの部分に分かれています。

  • グローバルブロック
    Nginxの動作に関連するグローバル設定
  • イベントは、
    ネットワーク接続に関連する構成をブロックします
  • http ブロック
    プロキシ、キャッシュ、ロギング、仮想ホスト構成
    • httpグローバルブロック
    • サーバーブロック
      • サーバーグローバルブロック
      • ロケーションブロック

: http ブロック内に複数の Server ブロックを設定でき、各 Server ブロック内に複数の location ブロックを設定できます。

Nginxの具体的な用途

静的リソースをデプロイする

Nginx は、静的リソースをデプロイするための静的 Web サーバーとして使用できます。静的リソースとは、一般的な HTML ページ、CSS ファイル、JS ファイル、写真、ビデオ、その他のリソースなど、サーバー上に実際に存在し、直接表示できるいくつかのファイルを指します。

Tomcat と比較して、Nginx は静的リソースの処理が効率的であるため、運用環境では、静的リソースは通常 Nginx にデプロイされます。

静的リソースを Nginx にデプロイするのは非常に簡単で、ファイルを Nginx インストール ディレクトリの下の html ディレクトリにコピーするだけです。

server {
  listen 80;                #监听端口
  server_name localhost;    #服务器名称
  location/{                #匹配客户端请求url
    root html;              #指定静态资源根目录
    index index.html;       #指定默认首页
}

リバースプロキシ

  • フォワードプロキシ

    クライアントとオリジナルサーバー(オリジンサーバー)の間に位置するサーバーで、オリジナルサーバーからコンテンツを取得するために、クライアントはエージェントにターゲット(オリジンサーバー)を指定してリクエストを送信し、エージェントはコンテンツを転送します。元のサーバーにリクエストを送信して取得したコンテンツがクライアントに返されます。

    フォワード プロキシの一般的な使用法は、ファイアウォール内の LAN クライアントがインターネットにアクセスする方法を提供することです。

    フォワードプロキシは通常、クライアント側にプロキシサーバーを設置し、プロキシサーバー経由でリクエストを転送し、最終的にターゲットサーバーにアクセスします。

  • リバースプロキシ

    リバース プロキシ サーバーはユーザーとターゲット サーバーの間に配置されますが、ユーザーにとってリバース プロキシ サーバーはターゲット サーバーと同等です。つまり、ユーザーはリバース プロキシ サーバーに直接アクセスして、ターゲット サーバーのリソースを取得できます。 、リバース プロキシ サーバーは、要求がターゲット サーバーに転送されることを担当します。

    ユーザーはターゲットサーバーのアドレスを知る必要はなく、クライアント側で設定を行う必要もありません。

  • リバースプロキシを構成する

server {
  listen       82;
  server_name  localhost;

  location / {
          proxy_pass http://192.168.188.101:8080; #反向代理配置
  } 
}

負荷分散

初期の Web サイトのトラフィックとビジネス機能は比較的単純で、1 台のサーバーで基本的なニーズを満たすことができましたが、インターネットの発展に伴い、ビジネス トラフィックは増加し、ビジネス ロジックはますます複雑になってきています。単一サーバーと単一点 障害の問題が強調されているため、パフォーマンスを水平方向に拡張して単一点障害を回避するには、複数のサーバーがアプリケーション クラスターを形成する必要があります。

  • アプリケーションクラスター:同じアプリケーションを複数のマシンにデプロイしてアプリケーションクラスターを形成し、ロードバランサーによって分散されたリクエストを受信し、業務処理を実行して応答データを返します。
  • ロードバランサー: ユーザーリクエストをアプリケーションクラスター内のサーバーに分散し、対応するロードバランシングアルゴリズムに従って処理します。

負荷分散を構成する:
ngnix.conf を変更する

upstream targetserver{    #upstream指令可以定义一组服务器
  server 192.168.188.101:8080;
  server 192.168.188.101:8081;
}

server {
  listen  8080;
  server_name     localhost;
  location / {
          proxy_pass http://targetserver;
  }
}

負荷分散戦略

参考https://www.cnblogs.com/KizunaAI/p/16311032.html#nginx%E6%A6%82%E8%BF%B0

実際のプロジェクトを最適化するための Nginx 静的リソースとリバース プロキシ

導入アーキテクチャ

導入環境の説明

サーバ:

  • 192.168.138.101 (サーバー B)

    Nginx: フロントエンド プロジェクトのデプロイ、リバース プロキシの構成

    Mysql: マスター/スレーブ レプリケーション構造のマスター ライブラリ..

    Redis: キャッシュミドルウェア

  • 192.168.138.100 (サーバー A)

    jdk: Java プロジェクトを実行する

    git: バージョン管理ツール

    Maven: プロジェクトビルドツール

    jar: Spring Boot プロジェクトは、組み込みの Tomcat に基づいて実行されるように、jar パッケージにパッケージ化されています。

    Mysql: マスター/スレーブ レプリケーション構造のスレーブ ライブラリ。

フロントエンドプロジェクトをデプロイする

ステップ 1: サーバー B に Nginx をインストールし、教材内の dist ディレクトリを Nginx の html ディレクトリにアップロードします

ステップ 2: Nginx 構成ファイル nginx.conf を変更する

server{
  listen 80;
  server_name localhost;

  location /{
    root html/dist;
    index index.html;
  }

  location ^~ /api/{
          rewrite ^/api/(.*)$ /$1 break;
          proxy_pass http://192.168.188.101:8080;
  }

  error_page 500 502 503 504 /50x.html;
  location = /50x.html{
      root html;
  }
}

バックエンドプロジェクトをデプロイする

1: jdk、git、maven、MySQL をサーバー A にインストールし、git clone を使用して git リモート ウェアハウスのコードのクローンを作成します。

2: アップロードされた sh スクリプトを実行します。/手動でパッケージ化して展開します。

sprinboot プロジェクト + キャッシュの最適化は以下を参照できます。

https://cyborg2077.github.io/2022/10/18/ReggieOptimization/

おすすめ

転載: blog.csdn.net/qq_41227539/article/details/130752834