専用のWebサーバーを使用すると、どのような利点がありますか? [閉鎖]

専用のWebサーバーを使用すると、どのような利点がありますか? [閉鎖]

具体的には、専用のWebサーバー(lighttpdやnginxなど)を使用してWebサーバー(Swift / Pythonなど)の指示に従ってプログラムを実行すると、どのような利点がありますか?

具体的には、単にWebフレームワーク(Perfect / Flaskなど)を実行して組み込みルーティングを使用するのとどのように比較されますか?

答え1

これは標準の「Webセキュリティアーキテクチャ」の質問です。

一般的な3階層アプリケーションには

  1. Webレイヤー
  2. アプリケーション層
  3. データベース(または他のバックエンド)層。

別の仕事を手伝うというアイデアです。

したがって、「Web層」は、すべての着信トラフィックの初期終点です。ここでSSL操作をすでに完了している可能性があります。この時点で、SQLインジェクション攻撃やパススルー攻撃などの着信トラフィックをスキャンできるWebアプリケーションファイアウォールなどを注入できます。

ここで終了すると、apache、nginx、またはlighttpdなどのフロントエンドサービスが悪意のあるトラフィック処理、誤った要求履歴にのみ専念し、より「安全」であるという利点があります。誰かがWebサーバーを攻撃する新しい方法(間違ったTCPビットセットでデータを断片化しますか?)を考案すると、親Webサーバーがパッチされると確信できます。ネットワークフレームワークはそれほど重要ではありません。

「クリーン」トラフィックのみがアプリケーション層に転送されます(この通信はHTTPかもしれませんが、より信頼できる送信元から送信されます)。あなたのアプリケーションはバックエンドと通信できます。

理想的には、これらの層はネットワークルーティングルールを使用して別のサーバーに存在する必要がありますが、外部要求サービスは「アプリケーションサーバー」にまったく到達できません。トラフィックがアプリケーションサーバーに到達する唯一の方法は、下位TCP層でもフロントエンドWebサーバーを介することです。しかし、これがなければ、いくつかのセキュリティ上の利点を得ることができます。

2番目の利点は、フロントエンドサービスがHAプロキシになり、複数のバックエンドアプリケーションサーバーに負荷を分散できることです。

3番目の利点は、フロントエンドWebサーバーから静的ファイル(画像、CSS、JavaScriptなど)を提供でき、大量のアプリケーション固有のコンテンツのみがアプリケーションに配信されることです。キャッシュレイヤーなどを追加できます。これにはパフォーマンス上の利点があります。

したがって、ビジネスの観点からは、これらを別々に維持する必要がある多くの理由があります。ただし、より多くの構成および設定操作が必要です。

どこまで行きたいかは個人的な好みです。

関連情報