Domain và DNS là gì? Cách trỏ tên miền về VPS đúng cách
Giải thích domain, DNS, nameserver, bản ghi A, AAAA, CNAME, TXT và quy trình trỏ tên miền về VPS để deploy website.
Mục lục bài viết
VPS & Hosting cho dự án của bạn
Khám phá các gói máy chủ và lưu trữ phù hợp từ website cá nhân đến ứng dụng production.
Khi mua VPS, bạn thường nhận một địa chỉ IP như 203.0.113.10. Người dùng vẫn có thể truy cập bằng IP, nhưng địa chỉ này khó nhớ và không phù hợp để xây dựng thương hiệu. Domain và DNS giúp ánh xạ một tên dễ nhớ như deployeasy.vn tới máy chủ đang chạy website.
Domain là gì?
Domain hay tên miền là địa chỉ mà người dùng nhập vào trình duyệt.
deployeasy.vn
Một địa chỉ đầy đủ có thể gồm subdomain:
blog.deployeasy.vn
└──┬─┘ └────┬─────┘
subdomain domain chính
Domain không tự chứa source code, database hoặc hình ảnh. Nó chỉ là tên dùng để xác định tài nguyên trên Internet.
DNS là gì?
DNS là viết tắt của Domain Name System. DNS chuyển đổi tên miền thành địa chỉ hoặc đích mà máy tính có thể sử dụng.
deployeasy.vn
↓ DNS
203.0.113.10
↓
VPS chạy Nginx
DNS record là các chỉ dẫn trên authoritative DNS server. Chúng có thể cho biết domain trỏ tới IP nào, mail server nào hoặc chuỗi xác minh nào.
Nameserver là gì?
Nameserver là máy chủ có thẩm quyền trả lời DNS cho domain.
Bạn có thể:
- Dùng nameserver mặc định của nhà đăng ký.
- Đổi sang Cloudflare.
- Dùng DNS của nhà cung cấp hosting.
Khi đổi nameserver, bạn phải quản lý record tại nhà cung cấp DNS mới. Record tạo ở trang quản trị cũ sẽ không còn tác dụng nếu nameserver đã chuyển đi.
DNS zone là gì?
DNS zone là vùng cấu hình của một domain.
Ví dụ:
A @ 203.0.113.10
CNAME www deployeasy.vn
A api 203.0.113.10
TXT @ giá trị xác minh
MX @ mail.example.com
Ký hiệu @ thường đại diện cho domain gốc:
@ = deployeasy.vn
Các loại DNS record quan trọng
Bản ghi A
Bản ghi A trỏ hostname tới địa chỉ IPv4.
Type: A
Name: @
Content: 203.0.113.10
Kết quả:
deployeasy.vn → 203.0.113.10
Tạo cho API:
Type: A
Name: api
Content: 203.0.113.10
Bản ghi AAAA
AAAA trỏ hostname tới IPv6.
Chỉ thêm khi VPS và ứng dụng hỗ trợ IPv6 đúng cách. Một AAAA record sai có thể khiến một số người dùng kết nối qua IPv6 nhưng không mở được website.
Bản ghi CNAME
CNAME làm một hostname trở thành bí danh của hostname khác.
Type: CNAME
Name: www
Target: deployeasy.vn
Không dùng CNAME để trỏ trực tiếp tới IP.
Bản ghi TXT
TXT thường dùng cho:
- Xác minh domain.
- Google Search Console.
- SPF.
- DKIM.
- DMARC.
- Dịch vụ bên thứ ba.
Không xóa TXT record nếu chưa biết dịch vụ nào đang dùng.
Bản ghi MX
MX xác định mail server nhận email cho domain. MX không dùng để trỏ website.
TTL là gì?
TTL là thời gian resolver được phép cache DNS record.
TTL: 300 giây
TTL thấp giúp thay đổi được nhìn thấy sớm hơn. TTL cao giảm truy vấn nhưng khiến việc đổi IP có thể mất lâu hơn.
Proxy và DNS only trên Cloudflare
Cloudflare thường có hai trạng thái:
- Proxied: lưu lượng web đi qua Cloudflare.
- DNS only: Cloudflare chỉ trả DNS, người dùng kết nối thẳng tới VPS.
Khi mới cấu hình, DNS only giúp dễ kiểm tra origin. Sau khi website chạy ổn, bạn mới cân nhắc bật proxy và cấu hình SSL phù hợp.
Quy trình trỏ domain về VPS
Giả sử:
Domain: deployeasy.vn
VPS IP: 203.0.113.10
App: 127.0.0.1:3000
Bước 1: Xác định IP công khai
Trên VPS:
ip addr
Hoặc xem IP trong trang quản trị nhà cung cấp.
Không dùng IP private như:
10.x.x.x
172.16.x.x – 172.31.x.x
192.168.x.x
Bước 2: Tạo A record cho domain gốc
Type: A
Name: @
Content: 203.0.113.10
TTL: Auto
Bước 3: Tạo record cho www
Type: CNAME
Name: www
Target: deployeasy.vn
Bước 4: Tạo subdomain API
Type: A
Name: api
Content: 203.0.113.10
Bước 5: Kiểm tra DNS
Windows PowerShell:
Resolve-DnsName deployeasy.vn
Resolve-DnsName api.deployeasy.vn
Linux/macOS:
dig deployeasy.vn
dig api.deployeasy.vn
Cách phổ biến:
nslookup deployeasy.vn
Bước 6: Cấu hình Nginx
server {
listen 80;
listen [::]:80;
server_name deployeasy.vn www.deployeasy.vn;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Kiểm tra:
sudo nginx -t
sudo systemctl reload nginx
Bước 7: Mở firewall
sudo ufw allow "Nginx Full"
sudo ufw status
Bước 8: Kiểm tra HTTP
curl -I http://deployeasy.vn
curl -I http://www.deployeasy.vn
Chỉ cài HTTPS sau khi HTTP đã đi tới đúng Nginx server block.
Dùng một VPS cho nhiều domain
deployeasy.vn → port 3000
api.deployeasy.vn → port 3001
admin.deployeasy.vn → port 3002
Nginx phân biệt request bằng server_name.
server {
listen 80;
server_name deployeasy.vn;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 80;
server_name api.deployeasy.vn;
location / {
proxy_pass http://127.0.0.1:3001;
}
}
Chuyển website sang VPS mới
Quy trình an toàn:
- Giảm TTL trước ngày chuyển.
- Deploy và test trên VPS mới.
- Đồng bộ database và file upload.
- Đổi DNS sang IP mới.
- Theo dõi cả server cũ và mới.
- Chỉ tắt server cũ khi lưu lượng đã chuyển ổn định.
Không xóa VPS cũ ngay sau khi đổi DNS.
Kiểm tra bằng file hosts
Windows:
C:\Windows\System32\drivers\etc\hosts
Linux/macOS:
/etc/hosts
Thêm:
203.0.113.10 deployeasy.vn
203.0.113.10 www.deployeasy.vn
Sau khi test phải xóa, nếu không máy của bạn sẽ bỏ qua DNS thật.
Lỗi thường gặp
DNS đúng nhưng website không mở
Kiểm tra:
sudo ss -tulpn
sudo systemctl status nginx
curl -I http://127.0.0.1
Có thể Nginx chưa chạy, firewall chặn, app chưa chạy hoặc proxy sai port.
Domain trả website khác
Request có thể rơi vào default server block:
sudo nginx -T
Tìm server_name trùng hoặc thiếu.
Chỉ www hoạt động
Có thể thiếu A record cho domain gốc hoặc thiếu domain trong server_name.
DNS chưa cập nhật
dig @1.1.1.1 deployeasy.vn
dig @8.8.8.8 deployeasy.vn
Cache ở từng mạng có thể khác nhau.
Đổi nameserver làm mất email
Khi đổi DNS provider, phải sao chép đầy đủ MX, SPF, DKIM và DMARC.
Checklist
[ ] Xác định đúng IP công khai
[ ] Nameserver đúng
[ ] A record cho @
[ ] CNAME hoặc A cho www
[ ] Record cho subdomain
[ ] Kiểm tra bằng dig/nslookup
[ ] Nginx server_name đúng
[ ] Port 80 và 443 mở
[ ] HTTP chạy trước SSL
[ ] HTTPS gồm đủ hostname
[ ] Chọn www hoặc non-www làm canonical
Câu hỏi thường gặp
Có cần mua domain và hosting cùng nơi không?
Không. Domain, DNS và hosting có thể dùng các nhà cung cấp khác nhau.
Một domain có trỏ tới nhiều IP được không?
Có thể, nhưng nhiều A record không tự tương đương một load balancer có healthcheck.
Có cần Cloudflare không?
Không bắt buộc. Bạn có thể dùng DNS của registrar hoặc nhà cung cấp khác.
DNS propagation mất bao lâu?
Không có thời gian chính xác cho mọi trường hợp. Nó phụ thuộc TTL, cache và loại thay đổi.
Kết luận
Domain là tên dễ nhớ, DNS là hệ thống chỉ đường, còn VPS là nơi chạy website. Trỏ domain thành công cần cả DNS đúng và server lắng nghe đúng hostname, port.
Nguồn tham khảo
Đọc tiếp
Bài viết liên quan
Deploy Node.js production bằng PM2 và Nginx trên VPS
Hướng dẫn deploy ứng dụng Node.js bằng PM2, ecosystem file, biến môi trường, startup, log, Nginx reverse proxy và rollback.
Đọc bài →Bảo mật PostgreSQL trên VPS: pg_hba.conf, user và firewall
Hướng dẫn bảo mật PostgreSQL production bằng listen_addresses, pg_hba.conf, role tối thiểu, password, firewall, SSL và SSH tunnel.
Đọc bài →Backup và restore PostgreSQL production bằng pg_dump
Hướng dẫn backup PostgreSQL bằng pg_dump, định dạng custom, pg_restore, lịch cron, kiểm tra restore và lưu bản sao ngoài VPS.
Đọc bài →