目录索引“...”被禁止

时间:2016-10-14 23:19:15

标签: ruby-on-rails ruby macos nginx passenger

我试图在Mac OSX上运行phusion乘客和nginx。这很困难。

我完全按照here的说明进行操作。

$ brew install nginx --with-passenger
$ brew info nginx --with-passenger 

然后它告诉我:

  

要激活Phusion Passenger,请将其添加到   /usr/local/etc/nginx/nginx.conf,在'http'上下文中:
  passenger_root /usr/local/opt/passenger/libexec/src/ruby_supportlib/phusion_passenger/locations.ini;   passenger_ruby / usr / bin / ruby​​;

有趣的是,这不是我网站使用的ruby。我使用rvm并生成了一个.versions.conf文件:

rvm --create --versions-conf use ruby-2.1.2@core

因此,当您cd到我的网站根文件夹时,您会得到以下内容:

$ rvm-prompt
ruby-2.1.2@core

这就是我添加到nginx.conf中的内容:

http {
  ...
  passenger_root /usr/local/opt/passenger/libexec/src/ruby_supportlib/phusion_passenger/locations.ini;
  passenger_ruby /Users/dviglione/.rvm/gems/ruby-2.1.2@core/wrappers/ruby;

请注意,当我运行passenger-config时,它确实为locations.ini提供了不同的位置:

$ /usr/local/bin/passenger-config --root
/usr/local/Cellar/passenger/5.0.26/libexec/src/ruby_supportlib/phusion_passenger/locations.ini

我不知道哪个位置是正确的,但我坚持使用它在安装过程中提供的位置。如果我换到另一个位置,我会遇到另一个问题:“无法访问此站点”。

在nginx.conf中,我的服务器块如下所示:

server {
    rack_env development;
    listen       8080;
    server_name  mysite_development;
    root /Users/myuser/projects/core;
    access_log /Users/myuser/projects/core/log/nginx_access.log;
    error_log /Users/myuser/projects/core/log/nginx_error.log;
    passenger_enabled on;
}

我在/ etc / hosts中添加了以下内容:

 127.0.0.1       mysite_development
 255.255.255.255 broadcasthost
 ::1             localhost 
 fe80::1%lo0     localhost

根目录具有以下权限:

$ ls -ld core
drwxr-xr-x  37 myuser  CORP\Domain Users  1258 Oct 14 18:45 core

然而,当我导航到http://mysite_development:8080/时,我的nginx错误日志中出现以下错误:

  

2016/10/14 18:52:23 [错误] 90766#0:* 1目录索引   “/ Users / myuser / projects / core /”被禁止,客户端:127.0.0.1,   server:mysite_development,request:“GET / HTTP / 1.1”,主机:   “mysite_development:8080”

问题不在于nginx本身,因为我创建了一个测试文件夹,并在其中放置了一个index.html,然后为其创建了一个服务器块,并在浏览器中成功显示了index.html。所以问题在于Passenger或Rails。

请注意,如果我将其添加到服务器块:

    location / {
        root   html;
        index  index.html index.htm;
    }

然后我就得到'欢迎来到nginx!'页。

我甚至chmod 777递归地访问了Rails应用程序的整个目录及其文件。仍然得到403 Forbidden错误。它必须是乘客的问题。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要使用Passenger's documentaion中描述的passenger_app_root指令显式指定Rails应用程序的实际Ruby代码所在的位置。

full answer中的更多细节。