1

乗客をスタンドアロンとしてDebianサーバー(ip 192.168.1.193)でレールアプリを実行しています

$ cd /home/hector/webapps/first
$ passenger start -a 127.0.0.1 -p 3000

そして、このアプリを提供したいのですが、別のサブフォルダーにリバースプロキシを使用して Nginx をスローします。

http://192.168.1.193/first

私のnginx.confサーバー:

...
server {
    listen 80;
    server_name 127.0.0.1;
    root /home/hector/webapps/first/public;
    passenger_base_uri /first/;
    location /first/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
    }
}
...

次に、Nginxサーバーを実行します

$ /opt/nginx/sbin/nginx

この構成で 1 つの Rails アプリを実行すると、すべてが正常に動作するように見えます。

しかし、2 つ目のアプリを追加しようとすると

$ cd /home/hector/webapps/second
$ passenger start -a 127.0.0.1 -p 3001

この nginx.conf ファイルで:

...
server {
    listen 80;
    server_name 127.0.0.1;
    root /home/hector/webapps/first/public;
    passenger_base_uri /first/;
    location /first/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
    }
}

server {
    listen 80;
    server_name 127.0.0.1;
    root /home/hector/webapps/second/public;
    passenger_base_uri /second/;
    location /second/ {
        proxy_pass http://127.0.0.1:3001;
        proxy_set_header Host $host;
    }
}
…

Nginxサーバー構成をリロードします

$ /opt/nginx/sbin/nginx -s reload
nginx: [warn] conflicting server name "127.0.0.1" on 0.0.0.0:80, ignored

警告が表示され、2 つ目のアプリにアクセスできません

http://192.168.1.193/second/ 

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

4

1 に答える 1

5

両方の場所を同じサーバーに配置するだけでよいと思います。

server {
  listen 80;
  server_name 127.0.0.1;

  location /first/ {
    root /home/hector/webapps/first/public;
    passenger_base_uri /first/;

    proxy_pass http://127.0.0.1:3000/;
    proxy_set_header Host $host;
  }
  location /second/ {
    root /home/hector/webapps/second/public;
    passenger_base_uri /second/;

    proxy_pass http://127.0.0.1:3001/;
    proxy_set_header Host $host;
  } 

}
于 2013-03-29T21:03:40.043 に答える