如何在具有SSL支持的AWS EC2单个实例上托管多个网站?

时间:2018-08-05 08:29:02

标签: apache amazon-web-services ssl

我是Amazon Web Service的初学者。我想在一台AWS t2.micro服务器上托管多个网站。 我在下面找到了解决方案。

<VirtualHost *:80>
ServerAdmin webmaster@yourdomain.com
DocumentRoot "/var/www/html/website1_folder"
ServerName yourdomain.com
ErrorLog "logs/yourdomain.com-error_log"
CustomLog "logs/yourdomain.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@yourdomain.com
DocumentRoot "/var/www/html/website2_folder"
ServerName subdomain.yourdomain.com
ErrorLog "logs/yourdomain.com-error_log"
CustomLog "logs/yourdomain.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@yourdomain.com
DocumentRoot "/var/www/html/website3_folder"
ServerName anotherdomain.com
ErrorLog "logs/yourdomain.com-error_log"
CustomLog "logs/yourdomain.com-access_log" common
</VirtualHost>

但是,此解决方案仅适用于非SSL网站。如何在具有SSL支持的单个AWS EC2实例上设置多个网站?我更喜欢apache网络服务器,因为我所有的网站都将使用php或静态html。是否有从头到尾配置的分步指南,例如配置实例,apache服务器,dns和ssl配置?请帮忙。预先感谢。

2 个答案:

答案 0 :(得分:0)

您有多个选择

  • 通配符证书(例如*。mysite。com)允许您使用任何子域邮件,但是通常这些证书需要花费一定费用,并且您仅限于子域级别
  • 您可以通过“主题备用名称” https://www.digicert.com/subject-alternative-name.htm
  • 来请求支持域列表的证书
  • 您可以使用SNI https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI,其中客户端在ssl握手期间发送请求的主机名,而amd服务器可以为不同的主机名使用不同的证书(当前大多数当前客户端支持SNI,旧的浏览器版本或客户端框架可能不支持)

我认为您最好的机会就是使用SNI

答案 1 :(得分:0)

要从第三方获得SSL / TLS证书,在您的EC2实例上使用并不便宜。我通常会使用CloudFront终止SSL / TLS连接,然后让它使用http与您的EC2站点进行通信。

您可以在AWS Certificate Manager中免费获得证书,而将CloudFront用于少量站点的费用为几美分。

对于所有子域使用通配符证书,在一个证书中列出多个域,还是单独的证书,由您决定。

关于循序渐进的指南,尽管在支持您的用例方面可能会有一些变化,但我之前是在上一个答案https://stackoverflow.com/a/51126705/6427978上完成的。