DeployEasy
Menu
ProductionCơ bản

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.

· 6 phút đọc · 1.317 từ
Mục lục bài viết

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:

  1. Giảm TTL trước ngày chuyển.
  2. Deploy và test trên VPS mới.
  3. Đồng bộ database và file upload.
  4. Đổi DNS sang IP mới.
  5. Theo dõi cả server cũ và mới.
  6. 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