3

私は 2 つの Ruby アプリケーションを持っています。1 つは Rails の下にあり、もう 1 つは Sinatra の下にあります。

これらのアプリの両方を Nginx と Passenger にデプロイするには、1 つをルート ("localhost:3000") に、もう 1 つをサブルート ("localhost:3000/test") に配置するにはどうすればよいですか?

Rails アプリケーションはこの構成で実行されています。すべてが正常に動作しているようです:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /var/www/demo/public;
        passenger_enabled on;
        rails_env production;
    }

    location /test/ {
        root   /var/www/test/public;
        passenger_base_uri /test/;
        proxy_pass http://10.0.3.12:80/test/;
        passenger_enabled on;
    }

2 番目のアプリケーションにアクセスできません。

サーバーは 2 番目のアプリに対して 404 を返し、最初のアプリはまだ実行中です。

4

2 に答える 2

1

ローカルポートのみをリッスンし、そこでパッセンジャーアプリを定義するローカルサーバーを定義する必要があると思います。ポートでリッスンしている実際のサーバーは、プロキシとしてのみ機能する必要があります。

server {
  listen              localhost:8181;
  server_name         test_app;
  root                /var/www/test/public;
  passenger_enabled  on;
}

server {
  listen              localhost:8182;
  server_name         demo_app;
  root                /var/www/demo/public;
  passenger_enabled   on;
  rails_env production;
}

server {
  listen       80;
  server_name  localhost;

  location / {
    proxy_pass http://localhost:8182/;
  }

  location /test/ {
    proxy_pass http://localhost:8181/;
  }
}

この構成をテストする機会がなかったので、小さな欠陥があるかもしれませんが、大まかに言うと正しいはずです。

于 2013-06-18T13:52:34.323 に答える
0

nginx.conf で:

server {
   listen       80;
   server_name  localhost;
   location / {
       root   /var/www/new/public;
       passenger_enabled on;
       rails_env production;
   }
location /test {
    root   /var/www/demo;
    passenger_base_uri /test;
    passenger_enabled on;   
}

ソフト リンクを追加します。

ln -s /var/www/loggerapp/public /var/www/new/test
于 2013-11-07T11:13:10.393 に答える