如何在EC2的一个实例上运行多个应用程序

我有几个小生产网站和一堆有趣的爱好者/实验应用程序等等。 我想在一个EC2实例上运行它们。

我可以安装node.js,npm,express和couchdb一次,然后在不同的端口上运行每个应用程序,并调整我的域registry中的dns设置以指向相应的位置?

更新:谢谢迈克! 对于在EC2上查找多个IP地址的其他人: http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html

有很多方法可以去做。

不同的端口

您可以在不同的端口上运行每个Node.js进程,并简单地将端口打开到全世界。 但是,您的URL需要每个项目主机名末尾的端口。 yoururl.com:8080/将在技术上工作,但可能不是你在找什么。

多个IP地址

您可以在一个EC2实例上使用多个IP地址,但每个月需要额外支付3.65美元的费用。 因此,如果您有一个实例需要托pipe10个不同的域名,那么托pipe费用每月超过30美元。

另一方面,使用SSL的任何域都需要它自己的IP地址。

另外,可以分配给实例的IP地址数量有限,实例越小,获得的IP地址越less。

您可以分配的IP地址数量因实例types而异。 小型实例最多可容纳8个IP地址(跨2个弹性networking接口),而高内存四倍超大型和群集计算机八个超大型实例最多可分配240个IP地址(8个弹性networking接口)。 有关IP地址和弹性networking接口限制的更多信息,请转到Amazon EC2用户指南中的实例系列和types。

Express Vhosts

Express配有虚拟主机function。 您可以在一个Node.js / Express服务器下运行多个域,并根据域名设置路由。 Express下的vhost启用了这个function。

反向代理

您可以在多个应用程序服务器前设置Nginx。 这具有最大的灵活性。 每个域可以有一个Node.js进程,允许您一次执行一个域的更新和重新启动。 它还允许您在Node.js进程旁边的相同EC2实例下托pipeApache / PHP等应用程序服务器。

使用Nginx作为反向代理,您也可以在同一个域下托pipe不同的应用程序服务器,但服务于不同的path。

例如,Node.js可以为域的主根path提供服务,但是您可以设置/blog/path到同一个EC2实例上的Apache / PHP / WordPress设置。