Tác giả

23 Tháng 10, 2025 • 7:00 AM

Tác giả: Linh Osimi

Amazon CloudFront: Mạng phân phối nội dung toàn cầu trên AWS

Từ nguyên lý hoạt động đến cách triển khai thực tế — giúp tăng tốc, bảo mật và tối ưu chi phí cho ứng dụng web của bạn.

1. CloudFront là gì?

Amazon CloudFront là dịch vụ CDN (Content Delivery Network) của AWS. Dịch vụ này giúp phân phối nội dung như HTML, CSS, JavaScript, hình ảnh, video và API đến người dùng trên toàn cầu nhanh hơn và an toàn hơn thông qua việc lưu trữ bản sao dữ liệu (cache) tại các điểm phân phối (edge location) gần họ nhất.

Ví dụ, khi người dùng ở Hà Nội truy cập một trang web có máy chủ đặt tại Mỹ, CloudFront sẽ tự động phân phối dữ liệu từ điểm biên gần nhất (chẳng hạn ở Singapore), giúp giảm độ trễ, tăng tốc độ tải và giảm tải cho máy chủ gốc.

Kiến trúc CDN CloudFront
Hình 1: CloudFront lưu cache nội dung tại điểm biên gần người dùng, giảm tải cho máy chủ gốc.

2. Các khái niệm cốt lõi

2.1. Distribution

Là "phiên bản triển khai" của CloudFront. Mỗi distribution có một tên miền riêng (ví dụ: d123456789.cloudfront.net) và được cấu hình để trỏ đến một nguồn dữ liệu (origin).

2.2. Origin

Nơi chứa nội dung gốc được CloudFront phân phối. Có thể là:

  • Amazon S3 (cho website tĩnh)
  • Load Balancer (ALB hoặc EC2)
  • API Gateway
  • Bất kỳ máy chủ HTTP công khai nào

2.3. Edge Location và Regional Edge Cache

Edge Location: hơn 450 điểm trên toàn cầu, nơi lưu trữ và phục vụ nội dung cho người dùng gần nhất.
Regional Edge Cache: lớp trung gian giữa edge và origin, giúp giảm số lần truy vấn về máy chủ gốc khi nội dung hết hạn.

2.4. TTL (Time to Live)

TTL xác định khoảng thời gian CloudFront lưu nội dung trong bộ nhớ đệm trước khi kiểm tra lại với origin. Có ba loại TTL: Min TTL, Default TTL, và Max TTL. Tốt nhất bạn nên để origin gửi header Cache-Control (ví dụ: max-age=86400) để CloudFront tự động tuân theo.

3. Cơ chế cache và làm mới nội dung

CloudFront lưu cache dựa trên URL đầy đủ, bao gồm cả phần query string. Ví dụ: /style.css?version=1/style.css?version=2 được xem là hai mục cache khác nhau.

Khi bạn cập nhật file trên origin, CloudFront sẽ không tự biết trừ khi TTL hết hạn. Nếu muốn cập nhật ngay, bạn có thể tạo lệnh “invalidation” để làm mới cache:

aws cloudfront create-invalidation --distribution-id E123456789 --paths "/style.css" "/app.js"

AWS cung cấp miễn phí 1.000 đường dẫn invalidation mỗi tháng. Để tránh vượt hạn mức, bạn nên áp dụng cách đặt tên file có version như app.v1.2.js.

4. Bảo mật với CloudFront

4.1. Origin Access Control (OAC)

Nếu bạn dùng S3 làm origin, hãy tránh để bucket ở chế độ công khai. Hãy bật OAC (hoặc OAI phiên bản cũ hơn) để chỉ CloudFront mới có quyền truy cập vào S3. Nhờ đó, bucket của bạn vẫn hoàn toàn private nhưng website vẫn hoạt động bình thường.

Origin Access Control trong CloudFront
Hình 2: OAC đảm bảo chỉ CloudFront mới truy cập được vào bucket S3 private.

4.2. HTTPS và tên miền tùy chỉnh

CloudFront hỗ trợ HTTPS mặc định với tên miền *.cloudfront.net và chứng chỉ AWS. Nếu muốn sử dụng tên miền riêng (như cdn.myapp.com), bạn chỉ cần cài chứng chỉ trong AWS Certificate Manager (vùng us-east-1).

4.3. AWS WAF tích hợp

Bạn có thể kết hợp CloudFront với AWS WAF để chặn các mối đe dọa như SQL Injection, XSS, giới hạn tần suất truy cập hoặc chặn IP từ khu vực cụ thể. Điều này giúp CloudFront trở thành lớp bảo mật đầu tiên trước khi lưu lượng đến máy chủ gốc.

5. Triển khai thực tế: Website tĩnh với S3 + CloudFront

  1. Bước 1: Tạo bucket S3 và tải lên các file HTML, CSS, JS. Không bật “Static website hosting”.
  2. Bước 2: Tạo CloudFront distribution, chọn origin là bucket S3, bật OAC, cấu hình “Redirect HTTP to HTTPS”.
  3. Bước 3: (Tùy chọn) Gắn tên miền riêng và chứng chỉ SSL từ ACM.
  4. Bước 4: Cấu hình Route 53 để trỏ domain đến CloudFront.

Kết quả: Website được phục vụ toàn cầu, an toàn và hoàn toàn private ở S3.

6. Thực hành tốt (Best Practices)

  • Luôn bật HTTPS cho cả người dùng và origin.
  • Thiết lập cache header hợp lý thay vì dùng TTL mặc định.
  • Tránh invalidation, nên dùng versioning cho file.
  • Kết hợp WAF để chống bot hoặc tấn công DDoS.
  • Bật log truy cập để phân tích hành vi người dùng.
  • Giới hạn vùng địa lý nếu website chỉ phục vụ một khu vực.

7. Kết luận

Amazon CloudFront không chỉ giúp tăng tốc độ tải trang mà còn là lớp bảo vệ và tối ưu thông minh cho hệ thống web. Khi được kết hợp cùng S3, WAF và Route 53, nó trở thành trung tâm của kiến trúc web hiện đại trên AWS.

Hãy bắt đầu với một distribution cơ bản cho website tĩnh, sau đó mở rộng sang cache API hoặc bảo mật nâng cao khi cần. Trong thế giới số, tốc độ mang lại trải nghiệm — và bảo mật tạo nên niềm tin.