3

我有两个 Ruby 应用程序,一个在 Rails 下,另一个在 Sinatra 下。

如何在 Nginx 和Passenger 中部署这两个应用程序,其中一个在根目录(“localhost:3000”),另一个在子根目录(“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;
    }

我无法访问第二个应用程序。

服务器为第二个应用程序返回 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 回答