17

まず、お詫び申し上げます。403 Forbidden の質問が Rails/Nginx のインストールでよくある質問であることは知っていますが、これまでに読んだ回答のどれも解決できませんでした。

免責事項: Heroku 以外の場所に Rails アプリをデプロイするのはこれが初めてです。優しくしてください。;)

状況: Ubuntu 12.04 サーバー上で実行されている Rails アプリがあり、Nginx (Passenger と共にインストールされます) を実行しています。

アプリをサーバーに正しくデプロイしましたが、サイトにアクセスしようとすると、403 Forbidden エラーが発生します。

エラーログを確認すると、次のように表示されます。

2013/10/23 22:47:01 [error] 27954#0: *105 directory index of "/var/www/colepeters.com/current/public/" is forbidden, client: 50.3…server: colepeters.com, request: "GET / HTTP/1.1", host: "colepeters.com"
2013/10/23 22:47:10 [error] 27954#0: *106 directory index of "/var/www/colepeters.com/current/public/" is forbidden, client: 184…server: colepeters.com, request: "GET / HTTP/1.1", host: "colepeters.com"
2013/10/23 22:47:12 [error] 27954#0: *107 directory index of "/var/www/colepeters.com/current/public/" is forbidden, client: 151…server: colepeters.com, request: "GET / HTTP/1.1", host: "colepeters.com"

ただし、このディレクトリのアクセス許可を確認すると、Nginx を使用するようにセットアップしたユーザーが読み取りと実行の両方のアクセス許可を持っていることがわかります。

nginx.conf からの関連情報は次のとおりです。

user  XXXX;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    passenger_root /home/cole/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.21;
    passenger_ruby /home/cole/.rvm/wrappers/ruby-2.0.0-p247/ruby;

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
       listen       80;
        server_name  colepeters.com www.colepeters.com;
        passenger_enabled on;
        root /var/www/colepeters.com/current/public/;
        rails_env production;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
          root   /var/www/colepeters.com/current/public;
          index  index.html index.htm;
          # autoindex on;
        }

これを解決するための助けをいただければ幸いです。ありがとう!

更新 以来、誤ったpassenger_rubyパスを修正しましたが、Nginxを再起動した後でも、403 Forbiddenが持続しています。

4

8 に答える 8

5

passenger_enabled on;サーバーディレクティブに追加するとうまくいきました。

于 2014-06-12T09:08:33.077 に答える
5

同じエラーが発生しました。私の場合、場所 / {} エントリを削除して修正しました。- または、ユーザーが Rails プロジェクトへのアクセス許可を持っていることを確認してください

...
server {
    listen       80;
    server_name  127.0.0.1;
    passenger_enabled on;
    rails_env production;
    root /www/kalender/public ;

    #charset koi8-r;

    access_log  /var/log/nginx/host.access.log;

    #location / {
       #root   html;
        #index  index.html index.htm;
    #}
于 2013-10-29T23:02:26.517 に答える
3

私はあなたと同様のセットアップを実行していて、nginx.conf ファイルで同じ問題を抱えていました。Nginx の落とし穴のページに出くわしたことが、解決に役立ちました。

あなたのファイルは私のものと似ているので、あなたが試してみて私のために働いた2つのことを共有します:

  1. まず、ブロックとブロックのroot両方にパスがあります。必ずしも問題ではありませんが、上記のリンクのドキュメントによると、「すべてのロケーション ブロックにルートを追加すると、一致しないロケーション ブロックにはルートがありません。」ロケーション ブロック内のルートを削除しましたが、サーバー ブロック内に保持しました。server {}location {}

  2. 'index' ディレクティブ ( index index.html index.htm;) をロケーション ブロックからブロック内に移動しhttp {}ます。ロケーションブロックはこれから継承します。

これら2つのことを行い、サーバーを再起動するとうまくいきました。

于 2013-12-15T05:46:50.827 に答える
2

問題はlocation / {...}セクションにあります: はから に伝播しpassenger_enabled onません。server {...}location / {...}

を削除するlocation / {...}か追加passenger_enabled onすると、機能するはずです。

于 2014-09-26T18:28:02.527 に答える
1

Rails アプリケーションが / でアクセス可能であると仮定して、/ セクションのロケーション ブロックを削除します。

Passenger_ruby が、選択した Ruby バージョンの rvm ラッパー スクリプトを指していることを確認します。

に到達するすべてのディレクトリに、ユーザー、グループ、およびその他に実行権限を追加します

/var/www/rails_app/public folder 
/var
/var/www
/var/www/rails_app
/var/www/rails_app/public_foler 
于 2014-07-11T06:52:04.020 に答える
0

サーバー ブロック内と /location ブロック内でルートを 2 回宣言し、インデックス ディレクティブを使用するように nginx に指示しています。パブリック フォルダの後の「/」も削除します

これをやってみてください

user  XXXX;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    passenger_root /home/cole/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.21;
    passenger_ruby /home/cole/.rvm/wrappers/ruby-2.0.0-p247/ruby;

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
       listen       80;
        server_name  colepeters.com www.colepeters.com;
        passenger_enabled on;
        root /var/www/colepeters.com/current/public;
        rails_env production;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

    }
}
于 2013-10-24T17:43:09.773 に答える