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