【发布时间】:2012-08-23 01:28:56
【问题描述】:
我试图在 sub-uri 下运行一些 Sinatra 应用程序,但似乎Passenger 没有将它们作为 Rack 应用程序。
来自 nginx-error 日志:403 错误,directory index of "/web/archive/sites/archive/app1/" is forbidden。如果我将index.html 放在该目录中,则会呈现该 HTML 文件。
应用程序在我的本地机器上使用rackup 运行良好,所以我觉得应用程序代码无关紧要。我还以 nginx 用户(nginx 配置顶部的user nginx)和archive 用户身份登录,该用户用于部署所有这些应用程序,并拥有所有目录和文件。使用任一用户导航到这些文件中的任何一个都没有问题。
此外,如果我将其移至子域(如 archive.domain.com),此设置也可以正常工作,然后让应用程序符号链接直接位于 /web/archive/sites(而不是 /web/archive/sites/archive)中,否则使用几乎相同nginx 配置,这就是为什么我不认为这是权限问题。
nginx 配置
server {
listen 80;
server_name domain.com;
location /archive {
root /web/archive/sites;
passenger_enabled on;
passenger_base_uri /app1;
passenger_base_uri /app2
}
}
目录结构
/web
|
+-- archive/
|
+-- sites/
| |
| +-- archive/
| |
| +-- app1 -> /web/archive/apps/app1/current/public
| |
| +-- app2 -> /web/archive/apps/app2/current/public
|
+-- apps/
|
+-- app1/
| |
| +-- current/
| |
| +-- public/
| |
| +-- config.ru
|
+-- app2/
|
+-- (same as app1/)
【问题讨论】:
标签: nginx sinatra passenger rack