Nginxは知っていますか?

5002 ワード

この文章は主に簡単にNginxの関連知識を紹介し、主に以下のいくつかの部分を含む.
  • Nginxはどのシーンに適用されますか?
  • なぜNginxが現れたのですか?
  • Nginxの利点
  • Nginxのコンパイルと構成
  • Nginxはどのシーンに適用されますか?
    図に示すように、1つのリクエストは、まずNginxを介してアプリケーション・サービス・レイヤに到着し、その後、Redis、MySQLなどのデータ・レイヤにアクセスし、基本的なデータ機能を提供します.デルのアプリケーションサービスは、開発効率が非常に高いため、qps、tps、または同時化が制限されているため、多くのアプリケーションサービスをクラスタ化し、ユーザーに高可用性サービスを提供する必要があります.多くのサービスがクラスタを構成すると,Nginxは逆エージェント機能を備え,動的要求をアプリケーションサービスに伝達する必要がある.
    アプリケーション・サービスがクラスタを構成すると、2つのニーズが得られます.
  • 動的拡張
  • が必要である.
  • 一部のサービスに問題が発生した場合、災害対応
  • を行う必要があります.
    このように、リバースエージェントは負荷分散機能を備えなければならない.
    次に、このようなリンクでは、Nginxは企業内ネットワークのエッジノードであり、ネットワークリンクの増加に伴い、ユーザが体験する遅延が増加するため、ユーザが変わらないように見えるか、または一定期間変わらないように見える動的コンテンツをNginx部分にキャッシュし、Nginxから直接ユーザにアクセスを提供する必要がある.これにより,ユーザの遅延が大幅に減少する.したがって、逆エージェントが拡張するもう一つの機能は、キャッシュであり、ユーザーのアクセスの遅延を減らすことです.
    多くのcss,js,img静的リソースのように,アプリケーションサービスを介してアクセスする必要はなく,ローカルファイルシステム上に配置された静的リソースのみがNginxから直接アクセスを提供すればよい.これはNginxの静的リソースサービスです.
    アプリケーション・サービス自体のパフォーマンスには多くの問題があります.データベース・サービスはアプリケーション・サービスよりも優れています.ビジネス・シーンが簡単で、同時パフォーマンスとtpsがアプリケーション・サービスよりもはるかに高いため、3番目のアプリケーション・シーンが拡張されています.Nginxが直接データベース、Redisにアクセスし、Nginxの強力な同時パフォーマンスを利用してwebファイアウォールのような複雑なビジネス機能を実現します.これはapiサービスに強い業務処理機能が必要であるため、OpenResty、Nginx統合のJavaScriptのように、JavaScript、luaのような言語機能とそれらの言語が持っているいくつかのツールライブラリを適用して完全なAPIサービスを提供します.
    なぜNginxが現れるのですか?
    インターネットの急速な普及とグローバル化とモノのインターネットの急速な発展に伴い、インターネットのデータ量が急速に増加している.
    CPUコア数は当初のシングルコアから16コア、さらには32コアに発展したが、オペレーティングシステムや大量のソフトウェアがマルチコアアーキテクチャにサービスを提供する準備ができていないため、サービスの性能は通常2倍に向上しない.
    Apacheのアーキテクチャモデルのプロセスは、同じ時間にリンクされたリクエストのみを処理し、処理が完了してから次のリクエストを処理します.実際には、オペレーティングシステムのプロセス間を切り替える特性を使用しています.オペレーティングシステムはミクロ的には限られたCPUしかありませんが、オペレーティングシステムは数百以上のプロセスに同時にサービスするように設計されています.Apacheのプロセスは1つのリンクにしかサービスできません.このようなモードは、Apacheが数十万、数百万のリンクに直面する必要がある場合に、何十万、何百万のプロセスを開くことはできません.プロセス間切替のコストは高すぎて、同時接続数が多ければ多いほど、このような無意味なプロセス間切替による性能消費も大きくなり、Nginxはこのような応用シーンのために生まれたもので、Nginxは数百万から数千万の同時チェーン接続を処理することができる.
    Nginxの利点
    一、高同時性、高性能
    各リンクに使用するメモリが十分に少ない限り、高同時性を実現できます.高い同時性と高性能を達成するには、良い設計が必要になることが多い.
    例えば、現在の主流のクラウドサーバでは、nginxは32コア64 Gの構成で数千万の同時リンクを簡単に達成することができます.単純な静的リソース要求を処理する場合、nginxは100 wのRPSに達することができる.
    RPS(Requests Per Second)は、QPS(Queries Per Second)に相当する1秒当たりの処理可能なリクエスト数、すなわち1秒当たりの処理可能なクエリー数である.1台のサーバが毎秒対応できるクエリー回数であり、1つの特定のクエリーサーバが所定時間内に処理するトラフィックの量を測定する基準である.
    二、拡張性が良い
    拡張性は主にモジュール化設計に現れている.モジュール化設計は非常に安定しており、Nginxの生態圏、サードパーティモジュールが非常に豊富である.Tengine、OpenRestyのようなサードパーティプラグインが彼の基礎の上に新しい生態圏を生成した.豊富な生態圏とサードパーティモジュールは、Nginxの豊富な機能を保証します.
    三、高信頼性
    高信頼性とは、Nginxがサーバ上で数年間継続的に稼働できることを意味しますが、多くのWebサーバは数週間または数ヶ月稼働することが多く、再起動が必要です.Nginxのような高同時性、高性能の逆プロキシサーバでは、エンタープライズネットワークのエッジノードで動作することが多い.この場合、企業が4つの9、5つの9、さらに高い可用性を提供したい場合、Nginxがダウンタイムを持続的に実行する時間は1年で秒しか計算できない可能性があるため、このようなロールでは、Nginxの高信頼性は私たちに非常に良い保証を提供してくれました.
    四、ホット配置
    ホット・デプロイメントとは、サービスを停止せずにNginxをアップグレードすることです.この機能はNginxにとって非常に重要です.サーバに数百万の同時リンクが走っているため、普通のサーバであれば、killがプロセスを落として再起動する方法でアップグレード操作を行うしかありません.しかし、Nginxでは、nginxプロセスを直接killすると、リンクが確立されたすべてのクライアントに悪い体験を与えるためです.
    五、BSDライセンス
    BSDライセンスとは、Nginxがオープンソースで無料であるだけでなく、カスタマイズされたニーズのあるシーンで、Nginxのソースコードを修正し、ビジネスシーンで実行することができ、合法的であることを意味します.
    Nginx組成
    Nginxは主に以下の4つの部分から構成されています.
  • Nginxバイナリ実行可能ファイル:各モジュールのソースコードによってコンパイルされた1つのファイル
  • Nginx.confプロファイル:Nginx動作制御
  • access.logアクセスログ:httpリクエスト情報
  • を記録する
  • error.logエラーログ:位置決め問題
  • 次に、Nginxのコンパイルに着手します.
    コンパイルNginx
    #   
    wget http://nginx.org/download/nginx-1.14.0.tar.gz
    #   
    tar -xzvf nginx-1.14.0.tar.gz
    cd nginx-1.14.0
    #   
    ./configure --prefix=/usr/local/nginx
    #   
    make
    #   
    make install

    configureで発生する可能性のある問題:
    ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre= option.
    ./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib= option.
    エラーの原因は、Nginxモジュールがlibライブラリに依存する必要があるためです.解決策は次のとおりです.
       pcre-devel   zlib-devel    :yum -y install pcre-devel zlib-devel

    Nginx構成
    Nginx構成構文
    Nginx構成パラメータ
    設定パラメータせっていぱらめーた:時間の単位じかんのたんい
    設定パラメータせっていぱらめーた:空間の単位くうかんのたんい
    http構成の命令ブロック
  • http:中のすべての命令がhttpモジュールによって解析されて実行されることを示す
  • server:対応するドメイン名orドメイン名のセット
  • を解析する
  • location:url式
  • upstream:上流サービスを表し、エンタープライズイントラネットサービスと直結する必要がある場合、upstream
  • を定義できます.

    例のすべての命令は、Nginxのhttpモジュールによって実行され、server 127.0.0.1:8000は解析が必要なドメイン名であり、locationの後に続くのは対応するマッチングルールであり、expires 3mは3分後にcacheがリフレッシュされ、zone=one:10mは10 mサイズの共有メモリ空き間が開かれ、異なるworkerに使用されることを示している.
    まとめ
    この文章は主にNginxが現れた原因と使用シーンを紹介し、Nginxの長所を分析し、最後に自分のNginxをコンパイルし、簡単な構成を行う.