我正在尝试在 sub-uri 下运行一些 Sinatra 应用程序,但似乎Passenger 没有将它们作为 Rack 应用程序来使用。
从 nginx 错误日志:403 错误,directory index of "/web/archive/sites/archive/app1/" is forbidden
. 如果我放置index.html
在该目录中,该 HTML 文件就会呈现。
这些应用程序在我的本地机器上运行良好rackup
,所以我觉得应用程序代码无关紧要。我还以 nginx 用户(user nginx
在 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/)