Linode更新 - 403禁止使用Rails和乘客Nginx

时间:2015-06-21 11:02:49

标签: nginx

Hello My App工作正常,直到Linode在服务器上进行了某种硬件更新。服务器上的所有文件仍然存在,一切似乎与以前一样。我联系了Linode,他们提到它可能是某个地方的许可问题(我无法找到)并且他们无法提供更多帮助。

Nginx错误日志显示以下内容:

2015/06/21 18:07:23 [error] 2870#0: *19684 directory index of
"/home/aurelplouf/apps/myapp/current/public/" is forbidden, 
client: XXX.XXX.XXX.XXX, server: XXX.XXX.XX.XX, request: "GET / HTTP/1.1", 
host: "myapp.com"

我有点不知所措,因为我没有改变。

我查看了passenger-config --root

/home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-4.0.53

哪个红宝石

/home/aurelplouf/.rvm/rubies/ruby-2.1.2/bin/ruby

nginx.conf ,具有以下设置:

http {
    passenger_root /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-5.0.11;
    passenger_ruby /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/wrappers/ruby;

    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  xxx.xxx.xx.xx myapp.com www.myapp.com *.myapp.com
        root /home/aurelplouf/apps/myapp/current/public;
        passenger_enabled on;

        location / {
            #root   html;
            # root /home/aurelplouf/apps/myapp/current/public;
            # index  index.html index.htm;
            passenger_enabled on;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

更新 最后,我检查了公用文件夹中的文件权限

aurelplouf@ruby:~/apps/myapp/current$ ls -al public
total 32
drwxrwxr-x  2 aurelplouf aurelplouf 4096 Jun 21 17:15 .
drwxrwxr-x 15 aurelplouf aurelplouf 4096 Jun 21 17:15 ..
-rw-rw-r--  1 aurelplouf aurelplouf  728 Feb 15  2014 404.html
-rw-rw-r--  1 aurelplouf aurelplouf  711 Feb 15  2014 422.html
-rw-rw-r--  1 aurelplouf aurelplouf  643 Feb 15  2014 500.html
lrwxrwxrwx  1 aurelplouf aurelplouf   51 Jun 21 17:13 assets -> /home/aurelplouf/apps/myapp/shared/assets
-rw-rw-r--  1 aurelplouf aurelplouf 1150 Feb 15  2014 favicon.ico
-rw-rw-r--  1 aurelplouf aurelplouf  431 Oct 21  2014 robots.txt
-rw-rw-r--  1 aurelplouf aurelplouf  340 Oct 21  2014 sitemap.xml.gz
lrwxrwxrwx  1 aurelplouf aurelplouf   51 Jun 21 17:15 system -> /home/aurelplouf/apps/myapp/shared/system
lrwxrwxrwx  1 aurelplouf aurelplouf   52 Jun 21 17:15 uploads -> /home/aurelplouf/apps/myapp/shared/uploads

1 个答案:

答案 0 :(得分:3)

passenger_enabled指令只能在配置文件中出现一次。将其保留在服务器级别并删除location /阻止。

此外,您可能需要考虑在server部分添加资产块以允许在浏览器中使用静态资产缓存(只要您使用rails资产管道,你应该):

http {
  passenger_root /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-5.0.11;
  passenger_ruby /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/wrappers/ruby;

  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;
  keepalive_timeout  65;

  server {
    listen       80;
    server_name  xxx.xxx.xx.xx myapp.com www.myapp.com *.myapp.com;
    root /home/aurelplouf/apps/myapp/current/public;
    passenger_enabled on;

    location ~ ^/(assets)/  {
            root /home/aurelplouf/apps/myapp/current/public;
            gzip_static on;
            expires max;
            add_header Cache-Control public;
            gzip_vary on;
            etag off;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
  }
}