Introduction
Dự án AWS mình đang làm cho khách hàng chuẩn bị đến giai đoạn Migration. Sau khi mọi thứ đã được triển khai trên môi trường mới, bước cuối cùng là chuẩn bị cho việc chuyển đổi từ hệ thống cũ sang hệ thống mới.
Một trong những yêu cầu trong quá trình Migration là Client muốn user của họ vẫn tiếp tục sử dụng domain cũ để truy cập, tuy nhiên hệ thống mới đã được dựng và test xong xuôi với domain mới rồi.
Chắc các bạn sẽ đặt câu hỏi. Thế sao không setting cho hệ thống mới dùng domain cũ luôn? Có 3 vấn đề:
- Hệ thống cũ đang chạy với User là người dùng trên toàn nước Nhật
- Thời gian down hệ thống cho phép là 2 ngày để hoàn tất quá trình chuyển đổi
- Việc request cấp phép domain certificate mất thời gian (có thể làm trước), tuy nhiên domain, subdomain, Route53 record đã được setting khá nhiều. Nếu việc chuyển sang domain chính có vấn đề thì rất rủi ro không thể hoàn thành trong 2 ngày.
Vì vậy trước mắt chọn giải pháp redirect domain cho an toàn.
Mình chợt nhớ ra ngày trước Cloud Mentor Pro vẫn dùng phongaws.com mà chưa được chuyển hướng sang cloudmentor.pro. Cho nên hiện tại access domain nào cũng đến cùng nội dung (Sử dụng Amplify để thêm nhiều domain cho dùng 1 web). Thế là nhân dịp tìm hiểu để chuẩn bị cho dự án thì triển luôn cho cái web của mình.
Thêm 1 nỗi đau nữa là web cloudmentor.pro của mình chưa được tối ưu hoá SEO nên cái domain phongaws.com vẫn hiển thị trong top đầu khi người dùng search google "Cloud Mentor Pro". Rất khó chịu luôn!

Việc redirect domain là một nhu cầu phổ biến khi bạn muốn rebrand, hợp nhất nhiều domain, hoặc đơn giản là chuyển người dùng từ domain cũ sang domain mới mà không làm mất traffic.
Trong bài viết này, mình sẽ chia sẻ các phương pháp redirect domain trên AWS và hướng dẫn chi tiết cách sử dụng Amazon S3 kết hợp với CloudFront để thực hiện việc này.
Các phương pháp redirect domain
Khi sử dụng Route 53, bạn có thể redirect domain bằng Application Load Balancer, Amazon S3, hoặc Amazon CloudFront. Mỗi phương pháp có những khả năng khác nhau.
Application Load Balancer
Application Load Balancer hỗ trợ redirect từ HTTP sang HTTPS và redirect domain name. Sử dụng Application Load Balancer thay vì Amazon S3 khi:
- Domain của bạn đang trỏ đến một Application Load Balancer
- Bạn cần authorization-based routing
- Bạn cần dynamic routing hoặc application-level routing
Tham khảo: How can I use an Application Load Balancer to redirect one domain to another?
Amazon S3 và CloudFront
Đối với các use case cơ bản, bạn có thể thiết lập static website trong S3 bucket và cấu hình redirect traffic. Amazon S3 là lựa chọn chi phí thấp cho các static website không sử dụng complex redirects.
Không nên sử dụng S3 bucket trong các trường hợp:
- Trỏ đến Application Load Balancer
- Path-based redirects
- Logic-driven, dynamic, hoặc application-level redirects
Lưu ý: Amazon S3 chỉ hỗ trợ HTTP protocol. Để redirect từ HTTP sang HTTPS, bạn cần sử dụng CloudFront distribution kết hợp với S3 bucket (Blog này sẽ hướng dẫn cách làm này)
CloudFront Function
Sử dụng CloudFront edge function cho các complex redirects. CloudFront function yêu cầu setup phức tạp hơn S3 bucket, nhưng có khả năng tùy chỉnh cao hơn. Bạn có thể redirect toàn bộ traffic sang domain khác hoặc chỉ redirect các trang cụ thể.
Tham khảo: How do I redirect a domain in CloudFront?
Lưu ý quan trọng:
- Redirection sẽ thay đổi domain name trên browser
- CNAME hoặc alias records giữ nguyên URL gốc và không thực hiện redirect
Use Amazon S3 and CloudFront for domain redirection
Trong bài viết này, mình sẽ hướng dẫn phương pháp sử dụng S3 và CloudFront vì đây là cách đơn giản và chi phí thấp nhất cho basic domain redirection.
Điều kiện tiên quyết:
- Domain cũ và domain mới phải được quản lý bởi Route 53
- Đã có 2 public hosted zone cho domain cũ và domain mới hoạt động

Tổng quan các bước thực hiện:
- Tạo S3 Bucket và cấu hình redirect
- Tạo CloudFront Distribution
- Cấu hình HTTPS settings
- Thiết lập Custom Domain với Route 53
Step 1: Tạo S3 Bucket và cấu hình redirect
- Mở S3 Console
- Chọn Create bucket
- Đặt tên bucket (ví dụ:
phongaws-redirect) - tên bucket không cần trùng với domain. S3 bucket có thể tạo ở bất kỳ region nào - Giữ nguyên các setting mặc định (không cần enable public access hay bucket policy)
- Chọn Create bucket
Cấu hình Static Website Hosting với Redirect:
- Vào bucket vừa tạo → Tab Properties
- Kéo xuống phần Static website hosting → Chọn Edit
- Chọn Enable
- Chọn Redirect requests for an object (không phải Host a static website)
- Nhập Host name là domain đích (ví dụ:
cloudmentor.pro) - Chọn Protocol là https
- Chọn Save changes
(Hình minh hoạ)

Step 2: Tạo CloudFront Distribution
- Mở CloudFront Console
- Chọn Distributions → Create distribution
Step 1: Choose a plan
Chọn plan phù hợp (không có gì đặc biệt thì chọn Free) → Next

Step 2: Get started
- Nhập Distribution name (ví dụ:
phongaws-redirect-distribution) - Chọn Single website or app
- Domain: chọn domain cũ (ví dụ:
phongaws.com) → Check domain - → Next

Step 3: Specify origin
- Origin type: Chọn Amazon S3
- Tại Origin, chọn S3 bucket đã tạo (ví dụ:
phongaws-redirect) - Click chọn Use Website Endpoint (chỗ này quan trọng)
- Các setting khác để default như Recommend
- Chọn Next

S3 origin URL sẽ thay đổi sau khi nhấn nút Use Website Endpoint. định dạng là <tên bucket của bạn>.s3-website-ap-southeast-1.amazonaws.com

Step 4: Enable security
- Cấu hình AWS WAF nếu cần (không cần thiết nếu chỉ cấu hình redirect)
- Chọn Next

Step 5: Get TLS certificate
- Chọn Create a new certificate: CloudFront sẽ request ACM certificate mới cho domain của bạn
- Hoặc chọn Use existing certificate: Chọn ACM certificate có sẵn từ region us-east-1
- Chọn Next
UI mới của Cloudfront chỗ này cực kỳ tiện lợi, bạn không cần có Certificate trước đó, cứ thế mà nhấn nút tạo thôi.

Certificate sẽ được tạo và validate bằng cách thêm 1 record CNAME vào hosted zone cho chúng ta, quá tiện luôn đúng không.

Step 6: Review and create
- Review lại các cấu hình
- Chọn Create distribution
Step 3: Cấu hình HTTPS settings (Tuỳ chỉnh nếu cần)
Khi chọn Amazon S3 làm origin type, CloudFront sẽ tự động set Viewer Protocol Policy thành Redirect HTTP to HTTPS. Nếu muốn thay đổi, làm theo các bước sau:
Các tùy chọn Viewer Protocol Policy:
- Redirect HTTP to HTTPS: Tự động redirect HTTP requests sang HTTPS
- HTTP and HTTPS: Cho phép cả HTTP và HTTPS requests
- HTTPS only: Chỉ cho phép HTTPS requests
Để thay đổi Viewer Protocol Policy:
- Mở CloudFront Console
- Chọn Distribution ID của bạn
- Chọn tab Behaviors
- Chọn Default(*) behavior → Edit
- Tại Viewer, chọn Viewer protocol policy phù hợp
- Chọn Save changes
Step 4: Thiết lập Custom Domain với Route 53
Cấu hình DNS trong Route 53:
- Mở Cloudfront Console
- Chọn Distributions vừa mới tạo
- Tab General phần Alternate domain names, Click Route domain to CloudFront -> Setup routing automatically
(hình minh hoạ các bước)



Sẽ có 3 record được tự động add vào Hosted zone cho bạn

Step 5: Test redirect domain
Có thể mất 1-2 phút để Route 53 cấu hình xong và bắt đầu chuyển hướng domain.
- Test bằng cách access CloudFront DNS
- Test bằng cách access domain cũ
(cách lấy dns CloudFront)

Giờ đây các truy cập đến http://phongaws.com hoặc https://phongaws.com đều được redirect đến https://cloudmentor.pro
Bạn có thể thử !!!
Kết luận
Việc sử dụng Amazon S3 kết hợp với CloudFront là một giải pháp đơn giản và chi phí thấp để redirect domain. Phương pháp này phù hợp cho các trường hợp basic redirection như rebrand domain hoặc hợp nhất nhiều domain về một domain chính.
Ưu điểm:
- Chi phí thấp (gần như miễn phí với lượng traffic nhỏ)
- Dễ dàng thiết lập
- Hỗ trợ HTTPS thông qua CloudFront
- Tích hợp tốt với Route 53
Nhược điểm:
- Không phù hợp cho complex redirects
- Không hỗ trợ dynamic routing, ví dụ:
- Redirect dựa trên user location/geo (User ở Việt Nam →
vn.example.com, User ở US → us.example.com) - Redirect dựa trên device/user-agent (Mobile →
m.example.com) - Redirect dựa trên query parameters hoặc headers
- A/B testing redirects
Nếu bạn cần các tính năng redirect phức tạp hơn, hãy xem xét sử dụng Application Load Balancer hoặc CloudFront Function.