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
これらすべてのアプリケーションの展開に使用され、すべてのディレクトリとファイルを所有するユーザーの両方としてSSHで接続しました。どちらのユーザーでも、これらのファイルのいずれかに問題なく移動できます。
また、このセットアップは、のようなサブドメインに移動してから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/)