Nginx - 禁止"/var/fruby/current/public/"的目录索引



好吧,这个问题肯定已经被问过几十次了,但我真的把所有类似的问题都看过了,这些问题都和我的问题无关。

讲一点历史和配置Rails 3应用,Passenger + Nginx 3作为生产服务器

我目前正在通过bash脚本部署我的Rails 3生产应用程序,基本上每次都克隆git repo并做一些神奇的事情,它有它的问题,所以我们决定迁移到Capistrano。

编写部署。Rb脚本,指定共享文件夹,首先在测试服务器上启动它,并设法使它顺利运行。

现在我对生产服务器做同样的事情,通过Capistrano将其部署到我的手动bash脚本文件夹中,以便它们不会以任何方式冲突,从

更改nginx root
root /var/www/public;

root /var/fruby/current/public;

重新启动nginx,我得到一个403错误和以下记录在日志中。

2014/06/08 18:28:32 [error] 5239#0: *1 directory index of "/var/fruby/current/public/" is forbidden, client: 109.187.177.116, server: example.com, request: "GET / HTTP/1.1", host: "example.com", referrer: ""

由于乘客配置没有改变,可以放心地假设问题出在文件夹权限的某个地方,但我真的无法确定问题出在哪里。权限,所有者对我来说真的是一样的吗,也许你可以给我指出正确的方向?

它必须和passenger有关,因为如果我用rails s手动启动应用程序,它启动得很漂亮。

/opt/nginx/conf/nginx.conf

http block内部:

passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18;
passenger_ruby /usr/local/bin/ruby;
proxy_read_timeout 640;

服务器块:

server {
    listen   443;
    server_name  example.com;
    ssl on;
    ssl_certificate /opt/nginx/conf/certs/example.com.crt;
    ssl_certificate_key /opt/nginx/conf/certs/example.com.key.nopass;
    charset utf-8;
    #root /var/www/public; # Old directory my bash script deployed to
    root /var/fruby/current/public; # New directory, capistrano deploys to
    passenger_enabled on;
    rails_env production;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

现在fruby文件夹有以下权限:

drwxr-xr-x  5 root root   4096 Jun  8 18:56 fruby/

目录

drwxr-xr-x  5 root root 4096 Jun  8 18:56 ./
drwxr-xr-x 17 root root 4096 Jun  8 17:31 ../
lrwxrwxrwx  1 root root   34 Jun  8 18:56 current -> /var/fruby/releases/20140608145412/
drwxr-xr-x  4 root root 4096 Jun  8 18:54 releases/
drwxr-xr-x  7 root root 4096 Jun  8 17:46 repo/
-rw-r--r--  1 root root  170 Jun  8 18:56 revisions.log
drwxr-xr-x  7 root root 4096 Jun  8 17:47 shared/

共享目录

drwxr-xr-x  7 root   root    4096 Jun  8 17:47 ./
drwxr-xr-x  5 root   root    4096 Jun  8 18:56 ../
drwxr-xr-x  2 root   root    4096 Jun  8 17:49 bin/
drwxr-xr-x  3 root   root    4096 Jun  8 17:47 bundle/
drwxr-xr-x  2 root   root    4096 Jun  8 17:51 log/
drwxr-xr-x 10 root   root    4096 Jun  8 17:24 public/
drwxr-xr-x  6 nobody nogroup 4096 Jun  8 18:56 tmp/

一切似乎都很好,几乎相同的权限,有生产服务器。

如果你需要更多的输出,请告诉我。

任何帮助都非常感谢!

通过将Passenger更新到4.0.44并重新编译nginx(再次运行 Passenger -install-nginx-module)来解决此问题,显然这是我最初测试的测试服务器的唯一区别。

解决问题的命令:

user@host-$: chmod 777 -R /tmp
user@host-$: chmod o+t -R /tmp
user@host-$: gem install passenger
user@host-$: passenger-install-nginx-module

前两个命令是这个答案的核心(在使用ruby应用程序时获得remove_entry_secure错误)

相关内容

最新更新