2013-05-14 197 views
11

我有幾個小型生產站點和一些有趣的愛好者/實驗應用程序等。我想在一個EC2實例上運行它們。如何在EC2的一個實例上運行多個應用程序

我可以安裝node.js,npm,express和couchdb一次,然後在不同的端口上運行每個應用程序,並調整我的域註冊表中的dns設置以指向適當的位置?

更新:謝謝邁克!對於在EC2上尋找多個IP地址的其他人:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html

+0

是的,儘管DNS不指向端口 - 它指向一個IP地址。 – 2013-05-14 17:16:11

+0

謝謝,邁克!嗯...那麼我該怎麼做(在EC2的一個實例上託管多個應用程序)? – Costa 2013-05-14 17:18:40

+1

多個IP地址?主機頭? – 2013-05-14 17:20:28

回答

31

有多種方式可以解決這個問題。

不同的端口

你可以在不同的端口上運行的每個進程的Node.js,只需打開端口到世界各地。但是,您的URL需要每個項目主機名末尾的端口。 yoururl.com:8080/技術上可行,但可能不是你要找的。

多個IP地址

你可以在一個EC2實例使用多個IP地址,但是,他們與3.65每人每月約$的額外費用。因此,如果您有一個實例需要託管10個不同的域名,那麼託管費用每月超過30美元。

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

此外,還有limits to the number of IP addresses您可以分配給一個實例,實例越小,您獲得的IP地址越少。

可分配的IP地址數因實例類型而異。小型實例最多可容納8個IP地址(跨2個彈性網絡接口),而高內存四倍超大型和羣集計算機八個超大型實例最多可分配240個IP地址(跨8個彈性網絡接口)。有關IP地址和彈性網絡接口限制的更多信息,請轉至Amazon EC2用戶指南中的實例系列和類型。

快速虛擬主機

Express包含虛擬主機的功能。您可以在一個Node.js/Express服務器下運行多個域,並根據域名設置路由。 Express下的vhost啓用此功能。

反向代理

您可以在多個應用程序服務器前設置Nginx。這具有最大的靈活性。每個域可以有一個Node.js進程,允許您一次執行一個域的更新和重新啓動。它還允許您在Node.js進程旁邊的相同EC2實例下託管應用程序服務器,如Apache/PHP。

使用Nginx作爲反向代理,您還可以在同一個域下託管不同的應用程序服務器,但服務於不同的路徑。

例如,Node.js可以提供域的主根路徑,但您可以設置/blog/路徑以轉到相同EC2實例上的Apache/PHP/Wordpress設置。

+1

你搖滾! Nginx聽起來是下一個最好的地方。我對此知之甚少,所以我會圍繞谷歌。如何使用單獨的IP? – Costa 2013-05-14 17:35:11

+2

更新了關於多重IP的答案。 – Daniel 2013-05-14 18:10:20

+0

非常感謝丹尼爾!好東西!我需要新的IP來處理任何有SSL的東西,這是肯定的。也許很快亞馬遜就會採用ipv6並降低新IP的成本。 – Costa 2013-05-14 18:25:27

相關問題