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

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

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

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

Ruby on Rails 5

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

nginx

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

Q&A

解決済

1回答

775閲覧

Rails + nginx + unicorn にて HTTP/1.1 301 Moved Permanently が発生します。

yuka7

総合スコア12

unicorn

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

Ruby on Rails 5

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

nginx

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

0グッド

0クリップ

投稿2019/05/06 15:31

編集2019/05/06 15:35

前提・実現したいこと

nginxとunicorn用いてruby on rails のproduction環境を実行しようとしています。
nginxとunicornを起動して、指定したURLにアクセスすると、
ブラウザでは「応答時間が長すぎます。」と表示されます。
また、サーバ上のターミナルでcurl -iコマンドにて接続すると、
「HTTP/1.1 301 Moved Permanently」が発生します。

nginxとunicornの連携ができていないと思われます。

どうぞよろしくお願いします。

発生している問題・エラーメッセージ

$ curl -i http://<IPアドレス>:80/ HTTP/1.1 301 Moved Permanently Server: nginx/1.14.1 Date: Mon, 06 May 2019 15:05:59 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive Location: https://<IPアドレス>/

railsプロジェクト config/unicorn.rb

ruby

1$worker = 2 2$timeout = 30 3$app_dir = File.expand_path('..', __dir__) 4$listen = File.expand_path 'tmp/sockets/unicorn.sock', $app_dir 5$pid = File.expand_path 'tmp/pids/unicorn.pid', $app_dir 6$std_log = File.expand_path 'log/unicorn.log', $app_dir 7 8# set config 9worker_processes $worker 10working_directory $app_dir 11stderr_path $std_log 12stdout_path $std_log 13timeout $timeout 14listen $listen 15pid $pid 16 17# loading booster 18preload_app true 19 20# before starting processes 21before_fork do |server, _worker| 22 defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.disconnect! 23 old_pid = "#{server.config[:pid]}.oldbin" 24 if old_pid != server.pid 25 begin 26 Process.kill 'QUIT', File.read(old_pid).to_i 27 rescue Errno::ENOENT, Errno::ESRCH 28 end 29 end 30end 31 32# after finishing process 33after_fork do |_server, _worker| 34 defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection 35end

/etc/nginx/conf.d/sample.conf

conf

1# max body size 2client_max_body_size 2G; 3upstream app_server { 4 # for UNIX domain socket setups 5 server unix:{app_root}/tmp/sockets/unicorn.sock fail_timeout=0; 6} 7 8upstream unicorn { 9 server unix:{app_root}/tmp/sockets/unicorn.sock; 10} 11 12server { 13 listen 80; 14 server_name <IP アドレス>; 15 # nginx so increasing this is generally safe... 16 keepalive_timeout 5; 17 18 access_log {app_root}/log/nginx_access.log; 19 error_log {app_root}/log/nginx_error.log; 20 21 # path for static files 22 root {app_root}/public; 23 # page cache loading 24 try_files $uri/index.html $uri.html $uri @app; 25 location @app { 26 # HTTP headers 27 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 28 proxy_set_header Host $http_host; 29 proxy_redirect off; 30 proxy_pass http://app_server; 31 } 32 # Rails error pages 33 error_page 500 502 503 504 /500.html; 34 location = /500.html { 35 root {app_root}/public; 36 } 37}

補足情報(FW/ツールのバージョンなど)

Rails 5.2.3
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]

unicorn (5.5.0.1.g6836, 5.5.0, 5.4.1)
unicorn-rails (2.2.1)

nginx version: nginx/1.14.1

Amazon Linux AMI 2018.03 Release Notes

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/05/07 01:17

ログには、どのようなメッセージが記録されていますか?
suama

2019/05/08 23:39

1. curlで -L オプションをつけてどうなりますか?(以下の結果で、ヘッダ情報とリダイレクト先まで返します) $ curl -I -L http://<IPアドレス>:80/ 2. unicornの側は起動していますでしょうか? echo -en 'GET / HTTP/1.0\r\n\r\n' | socat stdio {app_root}/tmp/sockets/unicorn.sock # 実際のソケットのパス とか、 nc -U {app_root}/tmp/sockets/unicorn.sock. (一旦接続) GET / HTTP/1.0 (繋がったらこちらを入力してリターン) で確認できるかと思います。
yuka7

2019/05/28 07:43

CHERRYさん、suamaさん、ありがとうございます。 こちらの設定ファイルのミスでした。
suama

2019/05/28 09:11

よかったですね! 参考までに、どういうところを設定ミスしてしまったか添えておいていtだけたら嬉しいです。今後同じように困った方にとても役立つと思います!
guest

回答1

0

自己解決

railsアプリの設定のミスでした。

投稿2019/05/28 07:43

yuka7

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問