新しいVPSでいくつかのWebサイトをホストすることを計画しているとしましょう。各サイトに必要なツールを見てみましょう。
HTTPサーバー
ウェブサイト「アルファ」は、純粋なHTML、CSS、およびJavascriptで構成されています。コンテンツは静的です。
誰かがウェブサイトAlphaにアクセスすると、そのブラウザはHTTPリクエストを発行します。VPSのIPアドレスに転送されるように要求するように(DNSおよびネームサーバー構成を介して)構成しました。ここで、VPSがそのHTTPリクエストを受け入れ、それをどう処理するかを決定し、訪問者のブラウザが理解できる応答を発行できるようにする必要があります。Apache httpdやNGINXなどのHTTPサーバーが必要であり、調査を行って最終的にNGINXを決定したとします。
アプリケーションサーバー
ウェブサイト「ベータ」は動的であり、DjangoWebフレームワークを使用して記述されています。
WSGIは、 Pythonアプリケーション(djangoアプリ)とアプリケーションサーバー間のインターフェイスを記述するプロトコルです。したがって、今必要なのはWSGIアプリサーバーです。このサーバーは、Webリクエストを理解し、アプリケーションのさまざまなオブジェクトに対して適切な「呼び出し」を行い、結果を返すことができます。ここには、 gunicornやuWSGIなど、多くのオプションがあります。あなたがいくつかの調査を行い、最終的にuWSGIを決定したとしましょう。
uWSGIは静的コンテンツのHTTPSリクエストも受け入れて処理できるため、必要に応じて、ウェブサイトAlphaを完全にNGINXで提供し、ウェブサイトBetaを完全にuWSGIで提供することができます。そしてそれはそれでしょう。
リバースプロキシサーバー
ただし、uWSGIは静的コンテンツの処理でパフォーマンスが低いため、Webサイトのベータ版であっても、画像などの静的コンテンツにはNGINXを使用することをお勧めします。しかし、その場合、何かがリクエストを区別し、適切な場所に送信する必要があります。それは可能ですか?
NGINXはHTTPサーバーであるだけでなく、リバースプロキシサーバーでもあることがわかりました。着信リクエストをuWSGIアプリケーションサーバーなどの別の場所にリダイレクトし、応答を収集してに送り返すことができます。元のリクエスター。素晴らしい!したがって、すべての着信リクエストをNGINXに送信するように構成します。これにより、静的コンテンツが提供されるか、必要に応じてアプリサーバーにリダイレクトされます。
複数のWebサーバーとの負荷分散
また、国際的に人気があり、大量のトラフィックを受信するブログであるWebsiteGammaをホストしています。
ガンマの場合、複数のWebサーバーをセットアップすることにします。すべての着信リクエストはNGINXを使用して元のVPSに送信され、ラウンドロビン方式で他のいくつかのWebサーバーの1つにリクエストをリダイレクトし、元のリクエスターに応答を返すようにNGINXを構成します。
HAProxyは、トラフィックの多いサイトの負荷分散に特化したWebサーバーです。この場合、NGINXを使用してサイトGammaのトラフィックを処理することができました。他のシナリオでは、高可用性クラスターを設定することを選択できます。たとえば、HAProxyなどのサーバーにすべてのリクエストを送信します。HAProxyは、元のVPSと同様のnginxサーバーのクラスターにトラフィックをインテリジェントにリダイレクトします。
キャッシュサーバー
トラフィック量が非常に多いため、WebサイトガンマがVPSの容量を超えました。代わりにウェブサイトDeltaをホストしていて、ウェブサーバーがDeltaを処理できない理由は、コンテンツが非常に多い人気のある機能が原因であるとしましょう。
キャッシュサーバーは、どのメディアコンテンツが頻繁に要求されているかを理解し、このコンテンツを別の方法で保存できるため、より迅速に提供できます。これは、ディスクIO操作を減らすことによって実現されます。人気のあるコンテンツは、代わりにメモリまたは仮想メモリに保存できます。このタイプの最適化とサーバーWebサイトGammaをより効果的に実現するために、既存のNGINXスタックをVarnishやMemchachedなどのテクノロジーと組み合わせることができます。