主要な Web フレームワーク (Django、Pyramid、Rails など) は、フロントエンドとして機能する nginx などの別の Web サーバーを使用して、永続的なサーバーとして実行されることがよくあります。Web サーバーは、FastCGI や SCGI などのプロトコルを介して接続します。
browser --[http]--> nginx --[fastcgi]--> flup -> django
これは複雑に思えます。バックエンドが独自の HTTP サーバーを実行できるのに、なぜリクエストがまったく異なるプロトコルに変換されるのでしょうか?
browser --[http]--> nginx --[http]--> wsgiref -> django
このアプローチは、トランスポート プロトコルが 1 つしかなく、それが RFC であるため、より単純で柔軟性があるように見えます。
ただし、Web フレームワークが http のみの設計を奨励しているのを見たことがないと思うので、それには理由があるに違いないと思います。
ここで FastCGI/SCGI のようなプロトコルを使用する利点は何ですか?