没有负载均衡器的EC2实例上的AWS SSL - NodeJS

问题描述:

是否有可能运行EC2实例,正在监听port 443,没有load balancer?我正在尝试在我的Node.JS应用程序中,但当我使用https://致电该页时,它不起作用。但是,如果我将它设置为port 80,则一切正常,http://没有负载均衡器的EC2实例上的AWS SSL - NodeJS

我早点用load balancerroute53,但我不想为ELB支付18美元/月,尤其是当我只有一台服务器运行时。

感谢您的帮助

你是对的,如果它只是一个实例,而且你觉得你不需要为流量的大幅增加做好准备,那么你不应该为ELB付费。

从高层次的角度来看,你必须经过以下几个步骤:

  1. 安装Nginx上的服务器,以满足您的应用程序的NodeJS。
  2. 在nginx服务器上安装SSL证书。

    - 要么手动执行此操作,请按照here所述将服务器安装到服务器并安装证书。

    - 或者在应用程序中包含必要的文件(我相信这只适用于弹性beanstalk?),它将自动覆盖nginx配置文件,如here所述。

  3. 确保nginx的是侦听端口443(应该已经在前面的步骤已经完成)
  4. 打开对应到您想要的流量进入服务器(端口80/443端口)
  5. 的EC2服务器的安全组

在我们的项目中,我们使用:

  • nginx作为负载平衡器,代理和缓存静态文件
  • pm2作为Node.js的
  • node.js进程管理器v6.9.1作为长期支持版本
  • MongoDB as数据库
  • redis如队列和缓存

这东西是在t2.medium实例上运行。

您如何看待在您的项目中使用nginx?

可能吗?当然是。听起来你已经在ELB上安装了SSL证书,现在你已经删除了ELB。您现在必须在EC2服务器上安装SSL证书。没有ELB或CloudFront分配,您无法使用AWS ACM SSL证书。如果您不想为其中任何一项服务付费,则必须在其他地方获得SSL证书。

+0

我有来自Namecheap的SSL证书,并且它已上传到IAM。当我设置ELB时,我只需选择使用IAM中的现有SSL证书。我如何将它安装在我的EC2上?我需要SSH进入它或什么? @MarkB – Thomas

+0

是的,您将不得不SSH进入服务器并手动安装证书。在这种情况下,您将无法使用IAM管理证书。 –

对于我们的项目(就像其他海报描述的),我们使用这种设置:

  1. nginx的负载均衡和代理的端口80上的所有呼叫(没有直接打电话给Node.js的端口服务器3000对公众开放)
  2. PM2作为过程管理器对的Node.js(以及部署)
  3. keymetrics.io用于监测
  4. 的NodeJS v6.9.3硼/ LTS(通过NVM)
  5. MongoDB的3.2 WiredTiger引擎(Compose.io)
  6. 托管亚马逊EC2实例(亚马逊的Linux Ubuntu的不)

这种设置非常适用于我们。在这个设置中,我们可以在不使用亚马逊负载平衡器的情况下设置SSL。