97
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なぜ Rails の前段に Nginx を置くのか

Last updated at Posted at 2022-04-27

追記(2023.09.13)

X にて、この記事が引用されて多くの議論が投稿されました。
それらの多くは以下の通り「ALB等の利用できる環境の現代であればもうNginxコンテナは不要」という内容が多数です。
その上で、本文に入って頂ければと思います。一部「いいね」が多いポストを貼り付けさせていただきます。

本文にショートカットしたい場合は、ここをクリック

ここから本文

以前、チームで以下のような会話が生まれました。

「コンテナに nginx 立てずに、直で rails Appサーバに ALB から流せばいいじゃん?」

みたいな話。その際に理由を即座にレスできなかったので、調査しました。

  • puma や Unicorn はあくまでAppサーバなのでユーザ直アクセス用途として設計されていない
    • バッファリング処理が弱い
    • バッファリング処理(処理速度や処理にかかる時間の違いを調整すること)
  • nginxから静的ファイルを配信するような構成も後からできる
  • App側で静的ファイルの配布すると遅いが、CloudFrontを持ち出すまでもないような構成の場合など
  • 本番環境では様々なアクセスを想定して nginx を前段において裁くことを想定すべき
  • Webサーバのアクセスログは解析とかする際に都合が良い

的な理由が多いです。ALB とか WAF でも事前に裁くことができますが...

ちなみに

config/environments/production.rb には以下のようなコメントがあります。

  # Apache or NGINX already handles this.
  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

つまりRails思想としては、Railsサーバーの手前(まさに前段)にApacheやNginxを設置する前提がベースだったと言えます。

参考記事

97
56
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
97
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?