使用Passenger for Nginx部署多个Ruby应用程序(Rails和Sinatra)?

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

如何在Nginx和Passenger中将这两个应用程序部署在一个根目录(“localhost:3000”)中,另一个在subroot(“localhost:3000 / test”)中?

Rails应用程序正在运行这个configuration。 一切似乎工作确定:

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,第一个应用程序仍在运行。

我相信你需要定义本地服务器,只监听本地端口并在那里定义你的旅客应用程序。 您在端口上侦听的实际服务器应仅充当代理。

 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/; } } 

我没有机会测试这个配置,所以它可能有一些小的缺陷,但从高级角度来看应该是正确的。

在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