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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

8862閲覧

Rails + nginx + unicorn の環境で403 forbiddenが返ってくる。

emahiro

総合スコア20

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

nginx

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/09/28 17:56

編集2016/09/28 17:58

rails + nginx + unicorn で開発環境を構築しています。

現状のステータス

  1. nginxを起動してhttp://mydomainでrailsにアクセスると403 forbiddenが返ってくる
  2. unicornの起動設定は行い、プロセスコマンドでもunicornの起動を確認済み
  3. ドキュメントルートは/path/to/myappに合わせている。

以下nginxの設定

dfault.conf

1 2upstream unicorn { 3 server unix:/tmp/unicorn.sock; 4} 5 6server { 7 listen 80; 8 server_name localhost; 9 10 #charset koi8-r; 11 access_log /var/log/nginx/access.log main; 12 error_log /var/log/nginx/error.log; 13 root /path/to/myapp/public; 14 15 location / { 16 #root /path/to/myapp/public; 17 } 18 client_max_body_size 64m; 19 error_page 404 /404.html; 20 error_page 500 502 503 504 /500.html; 21 try_files $uri/index.html $uri @unicorn; 22 23 location @unicorn { 24 proxy_set_header X-Real-IP $remote_addr; 25 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 26 proxy_set_header Host $http_host; 27 proxy_pass http://unicorn; 28 } 29

上記の状態でnginxを起動させた場合に / にアクセスすると403が帰ってきます。

行った対処
簡単にぐぐってみて調べた範囲では

  1. publicのpermissionを777に変更
  2. bundle exec rake assets:precompile を実行

しましたが上手くいかず。

nginxのログにはそもそも

error.log

1 22016/09/28 19:29:28 [error] 8268#8268: *1 directory index of "/path/to/myapp/public/" is forbidden, client: 192.168.33.1, server: localhost, request: "GET / HTTP/1.1", host: "192.168.33.10" 3

と返ってきている。

環境
CentOS7
Vagrant 1.8
Rails 4.4
Ruby 2.3
nginx 1.10

rails server でrailsのサーバーを起動させた際は正常に動作しているので、nginx + unicornでrailsを動作させるときに403になる理由と対処を教えていただきたいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

「directory index of "/path/to/myapp/public/" is forbidden」なので、"location / { }" の中に index か try_files を設定する必要があると思います。
try_files $uri/index.html $uri @unicorn; は "location / { }" の中に設定するのではないでしょうか。

投稿2016/09/29 04:42

TaichiYanagiya

総合スコア12141

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

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

emahiro

2016/09/29 18:11

アドバイス頂いたとおり、try_filesをlocation / {}に記載したらうまくいきました! ありがとうございました。
guest

0

nginx の設定で「server_name localhost;」となっているのに「http://mydomain」でアクセスしているからダメなのでは?

http://localhost」でアクセスしても「403 forbidden」になりますか?

もし「http://mydomain」でアクセスしたいのであれば、「server_name mydomain;」と設定する必要があると思います。その辺の設定をもう一度確認して見てください。

投稿2016/09/28 19:49

pi-chan

総合スコア5936

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

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

emahiro

2016/09/29 00:31

@pi-chan さん http://myadminとしたのは、説明不足でした。 現在vagrantを使っており、macからvagrantに立てたnginxにアクセスする際にVagrantFileのprivate networkでip:192.168.33.10を指定しております。 そのため、http://localhostでアクセスするところをhttp://192.168.33.10/でアクセスしており、ここで403が返ってきてしまいます。 rails serverを起動して、192.168.33.10:3000でアクセスした場合には表示されるので、現状nginx + unicornでどうしてこういう状況になっているのかの原因が分からずにおります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問