質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

解決済

upstream prematurely closed connection while reading response header from upstreamが解消できない

tsueken
tsueken

総合スコア8

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0評価

0クリップ

3869閲覧

投稿2021/02/27 10:12

本番環境でのデプロイ完了後にブラウザで開くと
assetsディレクトリのファイルが読み込めず、
以下のように「502 Bad Gateway」となり、正常に動作しません。
ちなみにリロードすると、コンソール上に表示されるエラーの数は変動します。

イメージ説明

nginxのエラーログでは以下のような内容が表示されています。

2021/02/25 10:02:01 [error] 19204#0: *185 upstream prematurely closed connection while reading response header from upstream...

上記エラーと関連性があるのかは分かりませんが、
ALBのヘルスチェックは unhealtyとなっており、
status detailは
「Health checks failed with these codes: [301]」
となっています。


###インフラ環境

  • EC2: t2micro
  • RDS
  • ELB(ALB)
  • nginx: 1.18.0
  • unicorn: 5.8.0
  • capistrano: 3.15.0

###その他環境

  • ruby: 2.6.3
  • Ruby on Rails: 5.2.4.1
  • webpack: 4.44.1

###関連ファイル
config/unicorn.rb

app_path = File.expand_path('../../../', __FILE__) worker_processes 1 timeout 60 working_directory "#{app_path}/current" listen "#{app_path}/shared/tmp/sockets/unicorn.sock" pid "#{app_path}/shared/tmp/pids/unicorn.pid" stderr_path "#{app_path}/shared/log/unicorn.stderr.log" stdout_path "#{app_path}/shared/log/unicorn.stdout.log" preload_app true before_exec do |server| ENV['BUNDLE_GEMFILE'] = "#{app_path}/current/Gemfile" end

/etc/nginx/conf.d/app.conf

proxy_cache_path /var/cache/nginx/rproxy levels=1:2 keys_zone=proxy1:10m inactive=1d; upstream app_server { server unix:/var/www/rails/app/shared/tmp/sockets/unicorn.sock max_fails=1 fail_timeout=10s; keepalive 40; } server { listen 80; server_name ip_addr; set_real_ip_from ip_addr; real_ip_header X-Forwarded-For; real_ip_recursive on; keepalive_timeout 60; root /var/www/rails/app/current/public; try_files $uri $uri/index.html @unicorn; location @unicorn { proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Server $hostname; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_connect_timeout 75s; proxy_read_timeout 60s; proxy_send_timeout 60s; proxy_cache proxy1; proxy_cache_bypass $http_authorization $http_cookie; proxy_no_cache $http_authorization $http_cookie; proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 4k; proxy_max_temp_file_size 1024m; proxy_busy_buffers_size 8k; proxy_pass http://app_server; } }

試したこと

自分なりに調べた限りでは、
前者のエラーに関連している可能性があるのは、
リバースプロキシとして導入しているnginxとunicornのtimeout関連の設定とプロセス数などが影響していると考えました。

試したこととしては上記のtimeout時間を延長または、プロセス数を減らすなどを試してみましたが、
一向に改善する様子がありませんでした。

何か他に影響している可能性についてご存知の方がいらっしゃいましたらご教示いただけないでしょうか。

宜しくお願い致します。


###参考サイト
Nginx upstream prematurely closed connection while reading response header from upstream, for large requests

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。