2

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/)
4

1 に答える 1

1

構成例のpassenger_base_urirootはディレクトリ構造と一致しません (例: /web/archive/sites/app1vs /web/archive/sites/archive/app1)。私が理解している限り、パッセンジャーは場所を考慮せず、 と のみrootを考慮しますpassenger_base_uri

構成を次のように変更してみてください

server {
    listen 80;
    server_name domain.com;

    location /archive {
        root /web/archive/sites/archive;
        passenger_enabled on;
        passenger_base_uri /app1;
        passenger_base_uri /app2
    }
}
于 2012-08-22T17:28:56.283 に答える