それぞれの説明
- Nginx: 一般的なWebサーバ。デフォでクライアントからのリクエストをバッファリング可能
- Puma, Unicorn: Rackアプリ向けWebサーバ。クライアントからのリクエストをバッファリングができないため、低速回線によるリクエストだと接続が完了するまでつまってしまう。UnicornはRackの機能をあわせ持つ(Pumaも?)
- Rack: Rackアプリ向けWebサーバとRailsとをつなぐAPIを提供するアプリケーションサーバ(ライブラリ).一般的なWebサーバNginxとの接続は想定されていない。
・・・というわけで、一般的に
Nginx - Puma, Unicorn - Rails
という構成が取られているみたい。
参考