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

Apache 如何在支持ssl的aws ec2单实例上托管多个网站?,apache,amazon-web-services,ssl,Apache,Amazon Web Services,Ssl,我是亚马逊网络服务的初学者。我想在一台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/you

我是亚马逊网络服务的初学者。我想在一台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>

服务器管理员webmaster@yourdomain.com
DocumentRoot“/var/www/html/website1\u文件夹”
ServerName yourdomain.com
ErrorLog“logs/yourdomain.com-error\u log”
CustomLog“logs/yourdomain.com-access\u log”通用
服务器管理员webmaster@yourdomain.com
DocumentRoot“/var/www/html/website2\u文件夹”
ServerName subdomain.yourdomain.com
ErrorLog“logs/yourdomain.com-error\u log”
CustomLog“logs/yourdomain.com-access\u log”通用
服务器管理员webmaster@yourdomain.com
DocumentRoot“/var/www/html/website3\u文件夹”
ServerName anotherdomain.com
ErrorLog“logs/yourdomain.com-error\u log”
CustomLog“logs/yourdomain.com-access\u log”通用

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

您有多种选择

  • 通配符证书(如*.mysite.com)允许您使用任何子域,但通常这些证书会花费一些费用,并且您仅限于子域级别
  • 您可以通过“subject alternative name”请求支持域列表的证书
  • 您可以使用SNI,客户端在ssl握手期间发送请求的主机名。amd服务器可以为不同的主机名使用不同的证书(目前大多数客户端都支持SNI,旧的浏览器版本或客户端框架可能不支持SNI)

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

您可以在AWS Certificate Manager中免费获得证书,在低容量站点使用CloudFront只需花费几分钱

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


至于分步指南,我在前面的回答中已经这样做了,不过可能会有一些变化来支持您的用例。

对于
t2.micro
,可能带有
堆栈,为了避免额外的开销,使用CDN类似Cloudflare()的东西可以简化此任务。@Foisal您能做到这一点吗?