快速把 EC2 串上 AWS CDN

整理流程為 server <- load balancer <- CDN <- client

除了 client 到 CDN 為 HTTPS,從 CDN 到 load balancer 再到後面都是走 HTTP

1. 先在 EC2 架設好 server,聽 3000 PORT

2. 設置 nginx

sudo apt update && sudo apt install nginx
sudo systemctl start nginx
vim /etc/nginx/sites-available/default

加上以下 config

server {
    listen 80;
    server_name example.com;  # Replace with your domain name or server IP

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

3. 接著在 AWS Load balancer 那邊新增 target group (目標群組)

選擇使用 HTTP

4. 建立附載均衡器

點選新增負載均衡器,選擇 Application Load Balancer

1.網路對應三個地區都勾選

2.建立新的安全群組,並且放入 80 port (用原本給的 default 安全群組會無法連線)

3.如下圖選擇剛才創建的目標群組

4.點選建立即可

5.申請 AWS HTTPS 證書

https://us-east-1.console.aws.amazon.com/acm/home?region=us-east-1#/certificates/request

這裡記得地區要先選擇 us-east-1,不然不能綁定到 CDN

之後選擇用 DNS 驗證,之後在右上角直接選擇將它給你的 CNAME 加入按鈕,即可完成驗證,並發行證書。

6.建設 CDN

來到最後一步了。

先到 aws cloudfront 頁面,照著以下設置即可

設定內容

  • Origin Domain Name: 選擇 ELB

  • Origin Path: 空白

  • Origin Protocol Policy: HTTP Only (CloudFront後面走 HTTP 即可)

  • Viewer Protocol Policy: Redirect HTTP to HTTPS

  • Allowed HTTP Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE

  • Alternate Domain Names: 設定你的網站網址 (api.domain....)

  • SSL Certificate: 使用 AWS Certification Manager 建立,將憑證建立在 (us-east-1) 才能使用。

  • 備用網域別名記得設定跟要設置的網域相同,不然之後 route53 無法選擇到該 CDN

7. Route53 設置 A 記錄到 CDN

新增一個 A 紀錄,輸入你要的名稱(例如 api ) ,下方來源選擇別名,然後選擇剛才創建的 CDN 即可

接著即可用剛才設置的 CDN 網域來存取 API Server

Last updated