如何在支持ssl的aws ec2单实例上托管多个网站?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在支持ssl的aws ec2单实例上托管多个网站?相关的知识,希望对你有一定的参考价值。

我是亚马逊网络服务的初学者。我想在一个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 webserver,因为我的所有网站都将使用php或静态html。是否有从开始到结束配置的一步一步指导,例如配置实例,apache服务器,dns和ssl配置?请帮忙。提前致谢。

答案

你有多种选择

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

我认为你最好的机会是SNI

另一答案

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

您可以在AWS Certificate Manager中免费获得证书,使用CloudFront进行小批量站点的费用便宜。

对所有子域使用通配符证书,在一个证书中列出多个域,或者单独使用证书,这取决于您。

至于一步一步的指南,我之前在前一个答案https://stackoverflow.com/a/51126705/6427978上做过这个,虽然可能有一些变化来支持你的用例。

以上是关于如何在支持ssl的aws ec2单实例上托管多个网站?的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS 上托管多个网站 - Amazon Linux EC2

如何为 AWS EC2 上托管的 Parse 服务器获取 APP_ID 和 CLIENT_KEY

AWS Elastic Beanstalk 使用 Django 在部署的 EC2 服务器上托管 PostgreSQL

如何使用 IIS7 服务器在 amazon ec2 windows 实例上托管域名

在 ec2 上托管的 apache spark 中使用 AWS EMRFS

Ubuntu 上托管的 LAMP 应用程序的 AWS SSL 证书