22

sinatra(ruby)、play(scala)、lift(scala)などのWebアプリケーションフレームワークは、特定のポートをリッスンするWebサーバーを生成します。

セキュリティ、クラスタリング、場合によってはパフォーマンスなど、いくつかの理由があり、Webアプリケーションの前でApacheWebサーバーを使用する可能性があることを私は知っています。

あなたの経験から、これには何か理由がありますか?

4

5 に答える 5

44
  • Web アプリケーションの一部は、完全に標準化され、コモディティ化された機能です。nginx や apache などの成熟した Web サーバーは、次のことを実行できます。アプリケーションサーバーで書き換えることができるものよりも、システム管理者にとってより正確で、より効率的で、より安定し、より安全で、より親しみやすく、より簡単に構成できる可能性が非常に高い方法で、次のことを行うことができます。
    • HTML、画像、CSS、JavaScript、フォントなどの静的ファイルを提供する
    • 仮想ホスティング (1 つの IP アドレスで複数のドメイン) を処理する
    • URL書き換え
    • ホスト名の書き換え/リダイレクト
    • TLS ターミネーション (@emt14 に感謝)
    • 圧縮(@JacobusRに感謝)
  • 別の Web サーバーは、アプリケーション サーバーが再起動またはクラッシュしている間、「メンテナンスのためダウン」ページを提供する機能を提供します。
  • リバース プロキシは、アプリケーション フレームワークに負荷分散とフォールト トレランスを提供できます。
  • Web サーバーには、root として特権ポート (1024 未満) にバインドし、非特権ユーザーとして実行するためのメカニズムが組み込まれており、テスト済みです。ほとんどの Web アプリケーション フレームワークは、デフォルトではこれを行いません。
  • 成熟した Web サーバーは、堅牢で安定しています。安定とは、文字通りほとんどクラッシュしないことを意味します。Web アプリケーションの安定性はほぼ確実に低下します。これにより、Web ブラウザーが一般的な「接続できませんでした」エラーを表示するだけでなく、アプリケーションがダウンしていることを示すかなりのエラー ページをユーザーに提供することができます。

そして、2013 年 1 月 30 日の Airbnb テック トークで Isaac Schluetter からの半公式の回答が必要な場合に備えて、彼はノードが安定しており、インターネットへの直接接続を提供するのに十分安全であるかどうかという質問に答えています. 彼の答えは基本的に「はい」です。したがって、それを行うことができ、おそらく安定性とセキュリティの観点からは問題ないでしょう (アプリ サーバー プロセスの予期しない終了を処理するためにクラスターを使用していると仮定します)。別の Web サーバーまたはリバース プロキシ/キャッシュの背後にあります。

于 2012-11-14T03:08:58.403 に答える
2

私は追加します:

  • SSL の取り扱い
  • apache のようないくつかのサーバーの多くのモジュール (つまり、ntml/kerberos 認証)
  • Web サーバーは、静的なサービスの提供など、アプリケーションと比較していくつかの点で優れています。
于 2012-11-14T05:54:28.803 に答える
2

多くの場合、フレームワークは必要なすべてを実行しますが、その上にレイヤーを追加すると、圧縮、セキュリティ、セッション管理、負荷分散などの一見無料の機能を提供できる場合があります。それでも、Web サーバーを追加するとセキュリティの問題が発生する可能性があります。たとえば、Web サーバーのセキュリティは、Lift 自体よりも簡単に侵害される可能性があります。また、一部の Web フレームワークは非常にスケーラブルであり、不適切に選択された Web サーバーによって妨げられることさえあります。

要約すると、フレームワークによって提供されない Web サーバーのような機能が必要な場合、Web サーバーは非常に良いオプションかもしれませんが、適切に構成し、セキュリティ パッチなどで定期的に更新することがもう 1 つ重要であることを覚えておいてください。

たとえば、暗号化または圧縮だけが必要な場合は、正しいライブラリまたはプラグインをフレームワークに追加するだけで、それが可能になる場合があります (それだけです)。

于 2012-11-14T05:19:05.803 に答える
0

プロキシ http サーバーを使用すると、フレームワークは、計算されたコンテンツを提供するために http 接続を開いたままにしておく必要がなくなり、他の要求の処理を開始できます。バッファーとして機能します。

于 2012-11-15T06:19:10.347 に答える
0

車輪の再発明の問題です。ほとんどのフレームワークは開発環境を提供しますが、本番環境では通常、本番環境で発生するすべての問題に対処できる商用/オープン ソース プロジェクトを使用することをお勧めします。

フレームワークを構築する人はフレームワークに集中できますが、サーバーを構築する人は同じことを行っています (完成)。

于 2013-01-04T08:04:20.197 に答える