簡潔な答え
Apache/Nginx + Passenger を使用します。Passengerは高速で信頼性が高く、構成と展開が簡単です。Passenger は、 Shopifyを含む多数の大きな Rails アプリケーションで採用されています。

(出典: modrails.com )
長い答え
CGI と FastCGI は忘れてください。当初は他に選択肢がなかったため、Rails を実行する唯一の方法は CGI またはより高速なブラウザー FastCGI を使用することでした。今日では、Rails を CGI で実行する人はほとんどいません。Rails の最新バージョンでは、.cgi および .fcgi ランナーが提供されなくなりました。
Mongrel は広く採用されているソリューションであり、CGI および FCGI の最良の代替品です。多くのサイトはまだ Mongrel と Mongrel クラスターを使用していますが、Mongrel プロジェクトはほぼ終了しており、多くのプロジェクトは既に他のソリューション (主に Passenger) に移行しています。また、Mongrel ベースのアーキテクチャは、フロントエンド プロキシ (シン、ngnix) と複数の Mongrel インスタンスで構成されるバックエンド アーキテクチャが必要なため、構成が非常に困難です。
パッセンジャーは発売以来、広く注目を集めています。多くのプロジェクトが Mongrel から Passenger に切り替えましたが、それには簡単な展開、保守性、パフォーマンスなど (ただしこれらに限定されません) が含まれます。さらに、Passenger は Apache と Ngnix の両方で利用できるようになりました。
Passenger を使用する最も簡単な方法は、Apache + Passenger 構成です。1 つの Apache インストールと複数の Passenger プロセス。
より優れたパフォーマンスとスケーラビリティが必要な場合は、Ngnix をフロントエンド プロキシとして使用し、すべての Rails リクエストを複数のバックエンド サーバーに転送できます。それぞれが Apache + Passenger で構成されています。ここでは技術的な詳細については触れません。このソリューションは、高レベルのトラフィックを伴う Rails プロジェクトで使用することを目的としています。
さらに複雑なソリューションには、http プロキシやサーバーなど、さまざまなレベルの組み合わせが含まれます。GitHubとHerokuから内部の詳細を読むと、私が話していることを理解できます。
現時点では、ほとんどの Rails プロジェクトにとって Passenger が最良の答えです。