本番環境では、なぜrails sではなくNginx,Puma?

rack(rails s)はあくまで、アプリケーションサーバー。なので、webサーバが持っているような負荷を分散させるための機能などがなく、実運用していく上で、大勢の人がサイトを見たときなどにとても重くなってしまう。

nginx: たくさんの人から、同時アクセスをされもrails sよりも数多くのアクセス数を対応できる。Railsで本番環境を構築するときに、puma, rackだけだと、高速な処理や高負荷に耐えられないため、webサーバであるnginx(pumaはwebサーバだが、貧弱。アプリケーションサーバとして使われる。RailsとRackが必ずセットで。)でそれらに対応できるようにしている。

puma: Rails5から、アプリを起動すると、pumaが内部で動くようになっている 厳密に言うと、Rackを提供するためのアプリケーションサーバ

It is designed for running Rack apps only.

https://puma.io/

アプリケーションサーバだけでも、機能するが、nginxを加えることで、多い処理に対応できたり、高速化することが可能になる

参考

https://qiita.com/takahiro1127/items/fcb81753eaf381b4b33c

https://puma.io/

https://kitsune.blog/rails-summary

f:id:kaz08:20210207143003j:plain