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

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

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

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

nginx

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

Q&A

解決済

2回答

649閲覧

Rails + puma + Nginxで http://ドメイン/にアクセスした場合にNginxの初期画面から変更したい

lyzmfeqpxs54

総合スコア237

Ruby on Rails 5

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

nginx

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

0グッド

0クリップ

投稿2019/12/04 03:02

編集2019/12/05 02:13

いつもお世話になっております。
現在RailsでWebページを作成しております。

Rails + puma + Nginxで連携状態です。
http://ドメイン/」も「http://ドメイン/home」も同様にhomesコントローラーのshowを呼びたいのですが、現状http://ドメイン/にアクセスした場合に、Nginxの初期画面が表示されてしまいます。
routes.rbは以下のように書いております

http://ドメイン/home」にアクセスした場合にはrailsのroutesを見るのですが、「http://ドメイン/」の場合にはroutesを見ずにNginxの初期画面が表示されます。

なにかNginxの設定がいるとは思うのですが、ググっても分からずこちらに質問させていただきました。
初歩的な質問で申し訳ございませんが、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。

config/routes.rb

get 'home' => 'homes#show'  #OK
get '/' => 'homes#show'    #NG

環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.6.1

追記

# /etc/nginx/nginx.conf user root; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; proxy_cache_path /var/cache/nginx keys_zone=zone1:1m max_size=1g inactive=24h; proxy_temp_path /var/cache/nginx_tmp; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name ドメイン名.com; root /home/rails/xxxxx/public; include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } access_log /var/log/xxxxx.access.log; error_log /var/log/xxxxx.error.log; error_page 500 502 503 504 /500.html; location = /500.html { root /home/rails/xxxxx/public; } } } # /etc/nginx/conf.d/ドメイン名.com.conf upstream puma { server unix:/home/rails/xxxxx/tmp/sockets/puma.sock fail_timeout=0; } server { server_name ドメイン名.com; listen 80; try_files $uri/index.html $uri @puma; location @puma { proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://puma; } access_log /var/log/xxxxx.access.log; error_log /var/log/xxxxx.error.log; error_page 500 502 503 504 /500.html; client_max_body_size 4G; large_client_header_buffers 4 256k; keepalive_timeout 10; }

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

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

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

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

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

CHERRY

2019/12/05 01:53

nginx の設定を 質問に追記していただけないでしょうか?
lyzmfeqpxs54

2019/12/05 02:14

いつもご回答ありがとうございます。 Nginxの設定を追記しました。
guest

回答2

0

自己解決

/etc/nginx/conf.d/xxxxxx.conf
に下記を記載することで解決いたしました

location / {
try_files $uri @puma;
}

投稿2019/12/23 02:46

編集2020/11/20 07:02
lyzmfeqpxs54

総合スコア237

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

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

0

root: 'homes#show'
を入れて下さい

投稿2019/12/04 05:19

winterboum

総合スコア23284

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

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

lyzmfeqpxs54

2019/12/05 01:48 編集

ご回答ありがとうございます。 ご教示いただいた root: 'homes#show' ではエラーがでしまったので、少し調べてみたところ以下のような書きかたがあることは分かったのですが、いずれの書きかたでも、「http://ドメイン/」はNginxの初期画面が表示されてしまいます。 root 'homes#show' #方法1 root :to => 'homes#show' #方法2 root to: 'homes#show #方法3
winterboum

2019/12/05 01:36

log見てみましょう。 それと 'pages#index'そのものは表示できるんですね?
lyzmfeqpxs54

2019/12/05 01:51

ご回答ありがとうございます。 >log見てみましょう。 ご教示いただいた、root: 'homes#show'では「http://ドメイン/」はNginxの初期画面が表示であり、他のページにアクセスしようとするとすべてNo Routes Matchでエラーがでます。 >'pages#index'そのものは表示できるんですね? 申し訳ございません。 いずれの書きかたでもといった部分は実際には「homes#show」と書いています。
winterboum

2019/12/05 02:28

「他のページにアクセスしようとするとすべてNo Routes Match」 1) これはどのlogですか? 2) すべて? http://ドメイン/home も? 3) routes.rb みせて
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問