[英]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.