繁体   English   中英

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

[英]directory index of "..." is forbidden

我正在尝试让 phusion 乘客和 nginx 在 Mac OSX 上运行。 这是非常困难的。

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

$ 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; 乘客红宝石/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 [error] 90766#0: *1 目录索引“/Users/myuser/projects/core/”被禁止,客户端:127.0.0.1,服务器:mysite_development,请求:“GET /HTTP/1.1”,主机:“mysite_development:8080”

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

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

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

然后我就得到了“欢迎使用 nginx!” 页。

我什至在 Rails 应用程序的整个目录及其文件上递归chmod 777 仍然得到 403 Forbidden 错误。 应该是Passenger的问题。

我该如何解决这个问题?

您需要使用passenger_app_root指令明确指定Rails 应用程序的实际Ruby 代码所在的位置,如Passenger 的文档中所述

我的完整答案中有更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM