AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

一、架構圖

我們要實現的架構師,一臺 EC2 兩個虛擬主機,通過一個 ELB,一個 CloudFront 實現動靜分離,並且實現不同的域名訪問不同的網站,並且啓用 HTTPS。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

二、實現步驟

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。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

2.2.2、創建負載均衡器

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

我們可以添加 HTTPS 的監聽(非必須),這樣我們就可以加密訪問了,可以設定各種規則,我們這裏不需要設定,加上就行。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

然後把域名解析到我們的 ELB,分別使用 HTTP 和 HTTPS 訪問我們的兩個虛擬主機,都是可以正常顯示各自的頁面,關於證書的申請,我們可以使用 AWS 的 ACM 服務。

2.3、S3 設置

按照默認創建即可,因爲我們的源站有調用圖片的目錄,所以我們這裏也創建兩個目錄,以供兩個虛擬主機分別調用,目錄裏面放好圖片。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

2.4、CloudFront 分配

大致架構圖如下:

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

2.4.1、創建分配

我們選擇 WEB 分發方式。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

源緩存設置我們默認。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

分配設置寫我們自己的虛擬主機的域名,並使用我們在 ACM 申請的證書。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

2.4.2、添加 S3 源

剛剛我們的是加速的源網站,因爲我們已經把靜態的圖片轉移到了 S3 上面,所以我們需要添加一個 S3 作爲 CDN 的源。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

2.4.3、創建行爲

我們創建一個動作,當用戶請求的目錄爲images1或者images2的時候,將會把 S3 作爲源,其他路徑繼續訪問 ELB。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

然後把我們的域名解析 CNAME 指向 CDN 的域名,然後訪問效果,圖片是不是加載的 S3 的內容,通過日誌也可以查看,我們把 Host 添加到白名單標頭之後,Host 傳到了 EC2,也就實現了虛擬主機的功能。

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

AWS 雲產品 CloudFront + ELB + EC2 + S3 構建虛擬主機動+靜分離站點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章