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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

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

nginx

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

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

1回答

1944閲覧

We're sorry, but something went wrong. の原因と対策を教えていただけないでようか?

koume

総合スコア458

Ruby on Rails 5

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

nginx

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

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2019/05/15 07:07

Railsアプリを公開しようと日々奮闘しています。
さくらのVPSの導入時にスタートアップスプリクトを使用しNginx+Let's encryptの設定はされていてSSL通信はできていました。その後、Capistrano3+Nginx+unicornでデプロイしました。

Rails+Nginx+unicornの環境です。

https://XXXX-XXXX.comでアクセスしたところ

「」
「If you are the application owner check the logs for more information.」

が発生しています。 サイト等で調べるとlogを見てエラー発生原因を特定し対応するようにありました。
しかし、production.log は更新されておらず、エラーは特定出来ませんでした。
unicorn.logについてもlogにエラーは記述されていませんでした。
Nginxのエラーログを見たらなにやらでていました。

/var/log/nginx/error.log 2019/05/15 15:21:38 [notice] 18138#18138: signal process started 2019/05/15 15:25:44 [error] 18139#18139: *10859 SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream, client: 155.233.56.54, server: XXXX-XXXX.com, request: "GET / HTTP/2.0", upstream: "https://unix:/usr/share/nginx/html/current/tmp/sockets/.unicorn.sock:/", host: "XXXX-XXXX.com

SSL と upstream がどうのとでていますのでnginxの設定が原因かと思います。
Nginxの設定ファイルです。

/etc/nginx/conf.d/https.conf upstream app_server { server unix:/usr/share/nginx/html/current/tmp/sockets/.unicorn.sock fail_timeout=0; } map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 443 ssl http2; server_name XXXX-XXXX.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { deny 212.64.88.231; deny 181.24.23.164; allow all; root /usr/share/nginx/html/current/public; index index.html index.htm; try_files $uri/index.html $uri.html $uri @app; } ssl_protocols TLSv1.2; ssl_ciphers EECDH+AESGCM:EECDH+AES; ssl_ecdh_curve prime256v1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_certificate /etc/letsencrypt/live/XXXX-XXXX.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/XXXX-XXXX.com/privkey.pem; proxy_connect_timeout 130; proxy_read_timeout 130; proxy_send_timeout 130; client_max_body_size 2G; error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html/current/public; } error_page 500 502 504 /500.html; location = /500.html { root /usr/share/nginx/html/current/public; } location @app { deny 212.64.88.231; deny 181.24.23.164; allow all; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass https://app_server; } set $maintenance false; if (-e /var/tmp/do_maintenance) { set $maintenance true; } if ($uri ~ "^/maintenance/") { set $maintenance false; } if ($remote_addr = 153.126.131.89) { set $maintenance false; } error_page 503 /maintenance/maintenance.html; location /maintenance/ { root /var/www; } if ($maintenance = true) { return 503; } }

自分のレベルでは原因の特定と、対策は全く手が出ない状況です。
どなたか、解決方法を教えていただけないでしょうか?
宜しくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

proxy_pass https://app_server;

https: にしているのはなにか理由があるのでしょうか?

投稿2019/05/15 08:35

CHERRY

総合スコア25171

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

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

koume

2019/05/15 09:11

回答ありがとうございます。以前「ERR_TOO_MANY_REDIRECTS」のエラーが発生していまして httpをhttpsに変更すればエラーが解消されるというサイトを見つけ、試したところ確かにエラーは 解消された経緯があり、そのままですすめていました。
CHERRY

2019/05/15 12:31

接続相手先の > upstream app_server { > server unix:/usr/share/nginx/html/current/tmp/sockets/.unicorn.sock fail_timeout=0; > } 側は、 SSL で待ち受けしているわけではないと思うのですが... SSL じゃない相手に SSL でつなごうとしているから > SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream, の ` SSL_do_handshake() failed ` エラーになっているのではないかと思います。 ( つまり、SSL で繋ぐ必要がないのに SSL でつなぎに行く設定になっている )
koume

2019/05/15 13:29

回答有り難うございます。CHERRY様のおっしゃるとおりだとだと思いますが しかし、proxy_pass https://app_server;をhttpに変えてアクセスすると リダイレクトループ(ERR_TOO_MANY_REDIRECTS)が発生してしまうのです。また、 try_files $uri/index.html $uri.html $uri @app;の記述位置をlocation / { }内に記述していますが それを移動しlocation @app { }の上に記述しアクセスすると403Forbiddenが発生してしまうのです。その場合のエラーは以下になります。 2019/05/15 22:21:21 [error] 6407#6407: *10964 directory index of "/usr/share/nginx/html/current/public/" is forbidden, client: 155.233.56.54, server: XXXX-XXXX.com, request: "GET / HTTP/2.0", host: "XXXX-XXXX.com 以前、403ForbiddenとERR_TOO_MANY_REDIRECTSのどちらのエラーも解決できなかったのですが、 解決方法をご存じでしたら教えていただけないでしょうか? 宜しくお願いいたします。
koume

2019/05/15 15:30

いろいろサイトなど、同じような事象を探してみました。CHERRY様のご指摘の「SSL じゃない相手に SSL でつなごうとしているから」のあたりを解決させないといけないみたいでした。 > upstream app_server { > server unix:/usr/share/nginx/html/current/tmp/sockets/.unicorn.sock fail_timeout=0; > } 側を「SSLで待ち受け」させる方法などあるのでしょうか?
CHERRY

2019/05/15 21:52

unix ドメインソケットを SSL 接続するって聞いたことないですね。
koume

2019/05/16 14:19

回答ありがとうございます。 無知のため、見当外れの質問していたようです。申し訳ございませんでした。 今回の質問の問題については別の質問での回答で問題が解決出来ました。 CHERRY様の回答でです。 本当にすごいです。 ありがとうございました。解決出来た質問で改めてお礼申し上げさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問