2014-04-01 45 views
1

它可能涉及到这样一个问题:How to run more than one app on one instance of EC2如何在一个EC2实例上运行多个应用程序?

但这个问题似乎只谈论多的node.js应用程序。

我想学习几个不同的东西,所以我建立了不同的网站来学习Ruby on Rails,LAMP和node.js.随着我的个人网站和博客。

有什么办法可以在同一个EC2实例上运行所有这些吗?

+0

你可以按照这个答案http://stackoverflow.com/a/16549172/93988。它足以与Ruby和Apache一起工作。 –

+0

是的,这是我联系的问题。安装几个不同的Web服务器并在一个实例上运行它们,引用的答案仍然适用? –

+1

是的。只要他们全部使用不同的端口,就不会有冲突。 –

回答

3

首先,关于在一个盒子上设置多个Web应用程序,没有任何EC2特有的。您将需要在“反向代理”模式下使用nginx(或Apache)。这样,Web服务器在端口80(和443)上侦听,并且您的应用程序可以在各种其他端口上运行。每个传入请求都会读取“主机”标头,将请求映射到后端。所以不同的DNS名称/域显示不同的内容。

下面是如何设置nginx的反向代理模式:http://www.cyberciti.biz/tips/using-nginx-as-reverse-proxy.html

对于每一个“后端”的应用程序,你会想:

1)分配一个端口(3000在这个例子中)

2)写一个upstream节,告诉它是应用程式是

3)写(虚拟)server节从服务器名称映射到上游位置

例如:

upstream app1 { 
     server 127.0.0.1:3000; #App1's port 
} 

server { 
    listen  *:80; 
    server_name app1.example.com; 

    # You can put access_log/error_log sections here to break them out of the common log. 

    ## send request to backend 
    location/{ 
    proxy_pass    http://app1; 
    proxy_set_header  Host   $host; 
    proxy_set_header  X-Real-IP  $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

我更喜欢有Nginx的Apache中的前面的原因有两个:1)的nginx可以充当用少得多的存储器静态文件,和2)的nginx缓冲器数据到/从客户端,所以慢速互联网连接的人不会阻塞你的后端。

在测试你的配置,使用nginx -s reload重新加载配置,并curl -v -H "Host: app1.example.com" http://localhost/从你的配置测试特定域

相关问题