我有两个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