簡體   English   中英

如何在一個EC2實例上運行多個應用程序

[英]How to run more than one app on one instance of EC2

我有幾個小型生產站點和一堆有趣的業余愛好者/實驗性應用程序等。 我想在一個EC2實例上運行所有它們。

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

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

有多種解決方法。

不同的端口

您可以在不同的端口上運行每個Node.js進程,只需打開端口即可。 但是,對於每個項目,您的URL都需要在主機名末尾有一個端口。 yoururl.com:8080/技術yoururl.com:8080/可以正常工作,但可能不是您想要的。

多個IP地址

您可以在一個EC2實例上使用多個IP地址,但是,每個IP地址每月要額外支付3.65美元。 因此,如果您要在一個實例上托管10個不同的域,則每月需多付30美元的托管費。

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

此外,可以分配給實例的IP地址數量也有限制,實例越小,獲得的IP地址就越少。

您可以分配的IP地址數量因實例類型而異。 小型實例最多可以容納8個IP地址(跨2個彈性網絡接口),而高內存四倍體超大型和群集計算機可以為8個特大實例分配多達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設置。

已回答@ https://stackoverflow.com/a/50528580/3477353,但再次提及。

除了@Daniel答案外,我想為那些正在尋找實現它的確切語法的人提到我的nginx的配置。

server {
  listen 80;
  server_name mysite.com;
  location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  Host       $http_host;
    proxy_pass        http://127.0.0.1:3000;
  }
}
server {
  listen 80;
  server_name api.mysite.com;
  location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  Host       $http_host;
    proxy_pass        http://127.0.0.1:4500;
  }
}

只需創建兩個具有唯一服務器名稱和端口地址的服務器對象。

注意每個對象中的proxy_pass。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM