一、架構圖
我們要實現的架構師,一台 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,也就實現了虛擬主機的功能。