2012-03-30 6 views
4

J'ai une section de serveur qui ressemble à:Comment puis-je créer des emplacements multiples avec Nginx, Passager, Sinatra

server { 
    listen  80; 
    server_name arch; 
    root /data/apps/production/fentonGem2/current/public; 
    passenger_enabled on; 
} 

qui fonctionne très bien. Cependant, je voudrais déployer deux ou plusieurs applications au même port server_name et listen. Donc, je suppose que j'utiliserais quelque chose comme ce qui suit:

server { 
    listen  80; 
    server_name arch; 
    location /app1 { 
     root /data/apps/production/fentonGem2/current/public; 
     passenger_enabled on; 
    } 
    location /app2 { 
     root /data/apps/production/fentonGem3/current/public; 
     passenger_enabled on 
    } 
} 

Mais cela ne fonctionne pas. Est-ce que quelqu'un sait comment je peux déployer deux applications distinctes, et les atteindre par:

http://domain.com/app1/ 

et:

http://domain.com/app2/ 

L'installation utilise Nginx, passagers Phusion, Rack, et Sinatra.


MISE À JOUR:

Merci pour les réponses, mais je les ai trouvé et l'approche pas utile, mais peut-être je ne comprends pas bien. Il semble que je doive déployer une application dans une autre, ce qui semble très sale. Ce que j'ai finalement eu recours à avoir des sections séparées server, puis la mise à jour de mon fichier /etc/hosts pour avoir des alias de serveur pour la même adresse IP. Alors maintenant, j'ai:

http://app1/ 

et:

http://app2/ 

et sections serveur qui ressemblent à:

server { 
    listen  80; 
    server_name app1; 
    root /data/apps/production/app1/current/public;   
    passenger_enabled on;   
}    
server { 
    listen 80; 
    server_name app2; 
    root /data/apps/production/app2/current/public; 
    passenger_enabled on; 
} 

et dans/etc/hosts:

192.168.1.30  app1 app2 

Répondre

1

Les suivants ont fonctionné:

  1. d'abord fait des liens symboliques nommés app1 et app2 pointant vers le « répertoire public » suit:

    ln -s /data/apps/production/fentonGem2/current/public /data/apps/production/fentonGem2/current/app1 
    ln -s /data/apps/production/fentonGem2/current/public /data/apps/production/fentonGem2/current/app2 
    
  2. Modifier nginx.d'avoir rails_base_uri conf, ce qui devrait ressembler à quelque chose comme ce qui suit:

    ... 
    server { 
        listen  80; 
        server_name arch; 
        location ^~ /app1 { 
         root /data/apps/production/fentonGem2/current; 
         rails_env production; 
         passenger_enabled on; 
         passenger_base_uri /app1; 
        } 
        location ^~ /app2 { 
         root /data/apps/production/fentonGem2/current; 
         rails_env production; 
         passenger_enabled on; 
         passenger_base_uri /app2; 
        } 
    } 
    ... 
    

Hope this helps.

+0

Merci l'homme, vous avez sauvé ma journée! :) – Caumons

Questions connexes