AWS 云产品 CloudFront + ELB + EC2 + S3 构建虚拟主机动+静分离站点
一、架构图
我们要实现的架构师,一台 EC2 两个虚拟主机,通过一个 ELB,一个 CloudFront 实现动静分离,并且实现不同的域名访问不同的网站,并且启用 HTTPS。

二、实现步骤
2.1、EC2 配置
在 EC2 上面安装 nginx 服务,创建两个虚拟主机的网站文件,以及虚拟主机配置文件,分别如下:
网站路径如下,首页里面通过标签引用了图片。
├── test1
│ ├── images1
│ │ ├── 1.jpg
│ │ └── 2.jpg
│ └── index.html
└── test2
├── images2
│ ├── 1.jpg
│ └── 2.jpg
└── index.html
两个虚拟主机对应的 nginx 配置文件如下:
server {
listen 80;
server_name test1.wzlinux.com;
root /usr/share/nginx/test1;
location / {
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
}
server {
listen 80;
server_name test2.wzlinux.com;
root /usr/share/nginx/test2;
location / {
}
}
域名解析到 EC2,验证没有问题,测试好之后,安全组可以改为只允许 ELB 所在安全组的流量访问,其实这里也可以配置 HTTPS,这里省略。
2.2、ELB 设置
2.2.1、创建目标组
创建好目标组之后,记得添加注册实例,就是我们的 EC2。

2.2.2、创建负载均衡器

我们可以添加 HTTPS 的监听(非必须),这样我们就可以加密访问了,可以设定各种规则,我们这里不需要设定,加上就行。

然后把域名解析到我们的 ELB,分别使用 HTTP 和 HTTPS 访问我们的两个虚拟主机,都是可以正常显示各自的页面,关于证书的申请,我们可以使用 AWS 的 ACM 服务。
2.3、S3 设置
按照默认创建即可,因为我们的源站有调用图片的目录,所以我们这里也创建两个目录,以供两个虚拟主机分别调用,目录里面放好图片。

2.4、CloudFront 分配
大致架构图如下:

2.4.1、创建分配
我们选择 WEB 分发方式。

源缓存设置我们默认。

分配设置写我们自己的虚拟主机的域名,并使用我们在 ACM 申请的证书。

2.4.2、添加 S3 源
刚刚我们的是加速的源网站,因为我们已经把静态的图片转移到了 S3 上面,所以我们需要添加一个 S3 作为 CDN 的源。

2.4.3、创建行为
我们创建一个动作,当用户请求的目录为images1或者images2的时候,将会把 S3 作为源,其他路径继续访问 ELB。

然后把我们的域名解析 CNAME 指向 CDN 的域名,然后访问效果,图片是不是加载的 S3 的内容,通过日志也可以查看,我们把 Host 添加到白名单标头之后,Host 传到了 EC2,也就实现了虚拟主机的功能。


AWS 云产品 CloudFront + ELB + EC2 + S3 构建虚拟主机动+静分离站点的更多相关文章
- 云服务器、虚拟主机和VPS的区别
虚拟主机就是利用网络空间技术,把一台服务器分成许多的"虚拟"的主机,每一台网络空间都具有独立的域名和IP地址,具有完整的Internet服务器功能.网络空间之间完全独立,在外界看来 ...
- 云服务器、vps、虚拟主机的区别
云服务器 Elastic Compute Service, 简称ECS 好多人理解云服务器和VPS一样,更有甚者说以前的VPS现在的说法就是云服务器,其实不然,云服务器是一个计算,网络,存储的组合.简 ...
- AWS云创建EC2与使用注意事项-踩坑记录
目录 AWS 一 创建 EC2(云服务器) 二.AWS 注意事项 三.AWS 申请 SSL 证书 四. 创建VPC AWS 文章 GitHub 地址: 点我 AWS云服务器价格计算器 AWS WEB ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- AWS云EC2(RHEL7)添加网络接口与路由调整
AWS云EC2(RHEL7)添加网络接口与路由调整 Amazon Linux(类似RHEL6,Centos6) 以及 RHEL7 修改MAC地址的说明 RHEL7 Centos7 添加路由 解决RHE ...
- A亚马逊WS网上系列讲座——怎么样AWS云平台上千万用户的应用建设
用户选择云计算平台构建应用程序的一个重要原因是高弹性的云平台和可扩展性. 面向Internet应用程序通常需要支持用户使用大量,但要建立一个高度可扩展.具有一定的挑战,高度可用的应用程序,只有立足AW ...
- [转帖]通俗解释 AWS 云服务每个组件的作用
你有听说过 ContainerCache,ElastiCast 和 QR72 这些 AWS 的新服务吗? 没有就对了,这些都是我编的:) 不过,AWS 有 50 多个服务,从名称也不能看出这些服务是做 ...
- 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计
设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...
- 使用AWS Lambda,API Gateway和S3 Storage快速调整图片大小
https://www.obytes.com/blog/2019/image-resizing-on-the-fly-with-aws-lambda,-api-gateway,-and-s3-stor ...
随机推荐
- sqlserver 删除表数据
可以使用delete清空表delete from t表名 也可以使用truncate命令 truncate table 表名
- Luogu P2148 [SDOI2009]E&D (sg函数 博弈)
题目 洛谷传送门 题解 打表找sgsgsg规律. 严谨证明见:纳尔的博客 CODE #include <bits/stdc++.h> using namespace std; int sg ...
- Nginx设置禁止通过IP访问服务器并且只能通过指定域名访问
为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,需要在nginx上设置禁止通过IP访问服务器,只能通过域名访问. 最关键的一点是,在server的设置里面添加这么一行: liste ...
- 使用Newtonsoft.Json将数据导出至Json文件
导出方法: /// <summary> /// 导出文件 /// </summary> public void Export(List<Dict> dicts, s ...
- P3038 [USACO11DEC]牧草种植Grass Planting
题目描述 Farmer John has N barren pastures (2 <= N <= 100,000) connected by N-1 bidirectional road ...
- (转)实验文档5:企业级kubernetes容器云自动化运维平台
部署对象式存储minio 运维主机HDSS7-200.host.com上: 准备docker镜像 镜像下载地址 复制 12345678910111213141516 [root@hdss7-200 ~ ...
- 从输入URL到浏览页面的过程
之前我们已经讨论过浏览器的渲染原理,今天我们来讨论下更广泛的从输入URL到渲染出页面的过程. 1. 查询该URL是否有缓存 如果有,则直接返回,没有的话,下一步 2. 查询URL对应的IP 首先,到 ...
- mysql 修改表结构以支持事务操作
修改表的类型为 INNODB 的 SQL: alter table category_ ENGINE = innodb; 查看表的类型的 SQL show table status from ...
- Spring Cloud Gateway(五):路由定位器 RouteLocator
本文基于 spring cloud gateway 2.0.1 1.简介 直接 获取 路 由 的 方法 是 通过 RouteLocator 接口 获取. 同样, 该 顶 级 接口 有多 个 实现 类, ...
- 动画之Evaluator
Evaluator就是通过监听器拿到当前动画对对应的具体数值,作用在于从插值器返回的数值进行转换成对应的数值.简单来说就是转换器 Evaluator返回值的类型更加动画中值决定的,所以在使用的时候注意 ...