2012-03-30 31 views
4

多個位置我有一個服務器部分,看起來像:如何創建與Nginx的,客運,西納特拉

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

工作正常。不過,我想將兩個或更多應用部署到相同的端口server_namelisten。所以大概我會使用類似以下的東西:

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

但這並不行。有誰知道我怎麼可以部署兩個獨立的應用程序,以及達到這些目標:

http://domain.com/app1/ 

和:

http://domain.com/app2/ 

的設置使用Nginx等的Phusion客運,機架和西納特拉。


UPDATE:

感謝您的答覆,但我發現他們的做法沒有幫助的,但也許我不理解得很好。這似乎是我必須在另一個應用程序中部署一個應用程序,這看起來很不乾淨。我最終採取的是分開的server部分,然後更新我的/etc/hosts文件以使服務器別名具有相同的IP地址。所以現在我有:

http://app1/ 

和:

http://app2/ 

和服務器的部分看起來像:

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

,並在/ etc/hosts文件:

192.168.1.30  app1 app2 

回答

1

以下工作:

  1. 首先作了題爲app1app2指向符號鏈接。‘公共’目錄如下:

    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. 修改nginx。CONF有rails_base_uri,這看起來應該像下面這樣:

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

希望這有助於。

+0

謝謝你,你救了我的一天! :) – Caumons 2016-09-16 09:52:00