Nếu bạn đang đọc bài viết này, thì rất có thể bạn đang gặp khó khăn khi di chuyển (transfer) tên miền (domain) từ các nhà cung cấp tên miền (domain providers) như Namecheap, GoDaddy, Porkbun, Domain.com … về Amazon Web Service (AWS) Route53.
Có hai lý do khiến bạn gặp vấn đề này đó là:
- Trước khi triển khai dịch vụ trên AWS, bạn đã sở hữu tên miền trên một nhà cung cấp khác mà không phải là AWS.
- Bạn muốn tiết kiệm chi phí duy trì domain cũng như muốn tận dụng các mã giảm giá từ các dịch vụ cung cấp domain.
Đừng lo, trong bài viết này tôi sẽ hướng dẫn các bạn khắc phục các vấn đề từng bước một để thiết lập thành công một domain từ nhà cung cấp dịch vụ khác tới Route53 và EC2 instance.
Yêu cầu
Trước khi bắt đầu, hãy chắc chắn rằng bạn có đủ 2 điều kiện sau:
- Sở hữu Namecheap domain. Vì bài viết này mình chỉ hướng dẫn với domain mua tại Namecheap, tuy nhiên các nhà cung cấp dịch vụ khác cũng tương tự.
- AWS Account với tối thiểu một EC2 instance đang chạy Web Server. Ở đây mình sử dụng
busybox http
làm web server, cài đặt rất đơn giản và dễ sử dụng, trên thực tế bạn có thể dùngApache
hayNginx
hayCaddy
, …
Thực hiện
Bước 1: Tạo EC2 instance & Elastic IP
Bạn đăng nhập vào AWS Management Console
> EC2
. Việc bạn cần làm tạo 1 instance EC2 và gán cho nó một Elastic IP
. Đây là công việc khá đơn giản, mình ko làm hướng dẫn chi tiết phần này.
Đừng lo lắng vì Elastic IP
là hoàn toàn miễn phí, và AWS sẽ chỉ charge tiền trên sự lãng phí của bạn mà thôi. Tức là khi bạn tạo một IP
mà nó lại không thuộc về bất kỳ instance nào.
Để cài đặt busybox
và create 1 html web page đơn giản, bạn SSH
vào bên trong EC2 & chạy lệnh sau:
$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64
$ sudo mv busybox-x86_64 /usr/local/bin/busybox
$ sudo chmod +x /usr/local/bin/busybox
$ cat > index.html <<EOF
<html>
<head><title>Hello World</title></head>
<body><h1>Hello, World</h1></body>
</html>
EOF
$ sudo /usr/local/bin/busybox httpd -p 80
Và đây là kết quả, hãy gõ địa chỉ Elastic IP
của EC2 lên browser:
Bước 2: Tạo mới Public Hosted Zone
Truy cập Route53 > Hosted zones
Tạo mới Public Hosted Zone
Tạo mới A record set
cho www
.
Ở phần Value
các bạn hãy thay giá trị IP: 198.51.100.234
thành Elastic IP
của EC2 instance mà bạn đã tạo trước đó nhé.
Tạo mới A record set
empty cho tên miền non-www
.
Lưu ý chọn Alias là [yes]
& ở mục Target
hãy gõ tên miền wwww
trong record trước đó.
Kết quả sau cùng, chúng ta có các record sau:
Bước 4:
Tiến hành copy toàn bộ DNS Servers trong Hosted Zone của Route53 AWS
sang NameCheap DNS Servers. Các bạn vô Domain List và bấm [Manage]
chọn domain tương ứng
sau đó Paste các DNS mà bạn vừa copy từ Route53
qua [NAMESERVERS]
(Nhớ chọn Custom DNS
nhé)
Lưu ý: Loại bỏ các ký tự ‘.
’ ở cuối mỗi DNS copy từ Hosted Zone trước khi paste sang DNS của Namecheap.
ns-125.awsdns-15.com. ----> ns-125.awsdns-15.com
ns-644.awsdns-16.net. ----> ns-644.awsdns-16.net
ns-1436.awsdns-51.org. ----> ns-1436.awsdns-51.org
ns-1650.awsdns-14.co.uk. ----> ns-1650.awsdns-14.co.uk
Bước 5: Tận hưởng thành quả 🤣
Mở trình duyệt lên và truy cập vào domain của bạn nhé, nếu hiện web page Hello, World
là mọi công việc setup đã thành công.
Nếu như bạn đã hoàn thành toàn bộ các step mà website vẫn chưa hoạt động hãy cố gắng đợi khoảng 1 ngày (24h) nhé, vì việc change DNS giữa các Name Server đôi lúc phải mất một khoảng thời gian cho các ISP cập nhật.
Ở thời điểm bài viết được đăng, chi phí cho Route 53 là khá nhỏ:
- $0.50 / hosted zone / month với 25 hosted zones đầu tiên.
- $0.10 / hosted zone / month với các hosted zones thêm vào sau đó.
Tất nhiên còn các chi phí cho Queries, Traffic, Health Checks nhưng hoàn toàn không đáng kể mấy 💵