2013-03-29 32 views
1

我與乘客在運行Debian服務器(IP 192.168.1.193)一個Rails應用程序作爲一個獨立的的Nginx +客運服務Rails應用在不同的子URI的

$ cd /home/hector/webapps/first 
$ passenger start -a 127.0.0.1 -p 3000 

我想爲這個應用程序在不同的子文件夾反向代理Nginx的扔如:

http://192.168.1.193/first 

我的nginx.conf服務器:

... 
server { 
    listen 80; 
    server_name 127.0.0.1; 
    root /home/hector/webapps/first/public; 
    passenger_base_uri /first/; 
    location /first/ { 
     proxy_pass http://127.0.0.1:3000; 
     proxy_set_header Host $host; 
    } 
} 
... 

的ñ我運行Nginx服務器

$ /opt/nginx/sbin/nginx 

隨着一個軌道應用程序與此配置運行一切似乎工作正常。

但是當我嘗試添加我的第二個應用程序

$ cd /home/hector/webapps/second 
$ passenger start -a 127.0.0.1 -p 3001 

與此nginx.conf文件:

... 
server { 
    listen 80; 
    server_name 127.0.0.1; 
    root /home/hector/webapps/first/public; 
    passenger_base_uri /first/; 
    location /first/ { 
     proxy_pass http://127.0.0.1:3000; 
     proxy_set_header Host $host; 
    } 
} 

server { 
    listen 80; 
    server_name 127.0.0.1; 
    root /home/hector/webapps/second/public; 
    passenger_base_uri /second/; 
    location /second/ { 
     proxy_pass http://127.0.0.1:3001; 
     proxy_set_header Host $host; 
    } 
} 
… 

和我重新加載的Nginx服務器的配置

$ /opt/nginx/sbin/nginx -s reload 
nginx: [warn] conflicting server name "127.0.0.1" on 0.0.0.0:80, ignored 

我得到一個警告,我不能從

0123訪問第二應用
http://192.168.1.193/second/ 

服務器用於所述第二應用程序返回404和第一應用仍在運行。

回答

5

我覺得你只要把兩個位置到同一臺服務器:

server { 
    listen 80; 
    server_name 127.0.0.1; 

    location /first/ { 
    root /home/hector/webapps/first/public; 
    passenger_base_uri /first/; 

    proxy_pass http://127.0.0.1:3000/; 
    proxy_set_header Host $host; 
    } 
    location /second/ { 
    root /home/hector/webapps/second/public; 
    passenger_base_uri /second/; 

    proxy_pass http://127.0.0.1:3001/; 
    proxy_set_header Host $host; 
    } 

} 
+0

是的,這個配置中的兩個應用程序工作正常!感謝薩沙。 – hector

+0

很高興我能幫助 –

+0

我剛剛意識到proxy_pass指令有一個斜線結束:'proxy_pass HTTP://127.0.0.1:3000 /,'如果沒有你會得到一個路由錯誤。 – hector

相關問題