我想我已经阅读了与乘客/nginx 和 403 错误相关的所有问题和答案,但没有一个能引导我找到解决方案,所以我开始......
我让 Nginx (1.0.6) 和 Passenger (3.0.9) 为 Rails 应用程序运行了很多很多个月,没有真正的问题。今晚我决定从Passenger v3.0.9 升级到v3.0.12 以利用新功能。根据提供的说明(使用 RVM)运行安装后,我访问了我的 rails 应用程序提供的 URL,并得到了可怕的 403 错误。nginx 日志文件首先让我认为这是一个权限错误:
directory index of "/home/SimfoUsers/public/" is forbidden, client: , server: , request: "GET / HTTP/1.1", host: ""
但是在检查了所有可能的许可之后,我不再认为这是问题所在。我认为问题实际上是乘客实际上并没有在运行,并且该页面被 nginx 用作“正常”网页。如果我将 index.html 文件添加到我的 rails 公共目录 (/home/SimfoUsers/public/),nginx 会按照预期提供此文件,这一事实支持这一点。此外,如果我运行乘客内存统计,零乘客进程正在运行。nginx 不应该在需要时自动生成乘客进程,还是我在这里完全遗漏了什么?
以下是我的 nginx.conf 文件的相关部分:
http {
passenger_root /usr/local/rvm/gems/ruby-1.9.2-p290@Simfo/gems/passenger-3.0.12;
passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.2-p290@Simfo/ruby;
...
server {
listen 80;
server_name simfo.info www.simfo.info;
root /home/SimfoUsers/public;
passenger_enabled on;
}
}
基本上,我从以前的工作配置文件中改变的唯一一件事是更新passenger_root 和passenger_ruby 指令以反映新版本的passenger (3.0.12)。所以如果这是一个配置文件问题,我真的很茫然地理解它......