Khi mua VPS và tên miền ở hai nơi khác nhau, bước dễ gây lỗi nhất thường là trỏ tên miền. Bạn có thể đã cài web server, upload mã nguồn, mở firewall đầy đủ nhưng trình duyệt vẫn báo không tìm thấy website, vào nhầm IP hoặc hiện trang mặc định của máy chủ.
Nguyên nhân là DNS có nhiều lớp: nhà đăng ký tên miền, name server, bản ghi DNS, IP VPS, web server và SSL. Chỉ cần sai một lớp, website có thể không hoạt động dù các phần còn lại đều đúng.

Vì sao cần trỏ tên miền về VPS
Tên miền như example.com là địa chỉ dễ nhớ cho người dùng, còn VPS dùng địa chỉ IP như 103.123.45.67. DNS là hệ thống giúp trình duyệt biết tên miền đó phải kết nối đến IP nào.
Khi bạn trỏ tên miền đúng về VPS, người truy cập gõ example.com sẽ được chuyển đến máy chủ chứa website. Sau đó Nginx, Apache, Docker hoặc panel quản trị web sẽ xử lý request và trả nội dung về trình duyệt.
Hai pain point phổ biến nhất là:
- Bạn đã cài WordPress, Laravel, Node.js hoặc website tĩnh trên VPS nhưng tên miền vẫn không vào được.
- Bạn đã đổi DNS nhưng website lúc vào được, lúc không, hoặc mạng này vào IP mới nhưng mạng khác vẫn về IP cũ.
Một tình huống khác cũng rất hay gặp: domain chính chạy được nhưng www.example.com không chạy. Người dùng truy cập bằng www sẽ thấy lỗi DNS, trang trắng hoặc trang web của một server khác.
Lưu ý: Trỏ DNS chỉ giúp tên miền tìm đúng VPS. Để website chạy hoàn chỉnh, VPS vẫn cần mở port
80,443, có cấu hình virtual host/server block đúng domain và cài SSL nếu dùng HTTPS.
Nếu bạn chưa quen với các thành phần trên VPS, có thể xem thêm hướng dẫn cấu hình firewall UFW cơ bản trước khi public website ra Internet.
Trỏ tên miền: sơ đồ toàn cảnh từ nhà đăng ký đến máy chủ
Để hiểu đúng quy trình, hãy hình dung luồng truy cập như sau:
Người dùng mở example.com
↓
Trình duyệt hỏi DNS resolver
↓
DNS resolver hỏi name server có thẩm quyền
↓
Name server trả về bản ghi A hoặc AAAA
↓
Tên miền được đổi thành IP VPS
↓
Trình duyệt kết nối VPS qua port 80 hoặc 443
↓
Nginx/Apache chọn website theo domain
↓
Website trả nội dung cho người dùng
Mỗi lớp có vai trò riêng:
| Thành phần | Vai trò | Ví dụ |
|---|---|---|
| Nhà đăng ký tên miền | Nơi bạn mua và quản lý domain | nơi mua example.com |
| Registry | Hệ thống quản lý phần mở rộng domain | .com, .net, .vn |
| Name server | Máy chủ trả lời bản ghi DNS cho domain | ns1.exampledns.com |
| DNS zone | Nơi chứa các bản ghi DNS | A, AAAA, CNAME, MX, TXT |
| Bản ghi A | Trỏ hostname đến IPv4 | example.com → 103.123.45.67 |
| Bản ghi AAAA | Trỏ hostname đến IPv6 | example.com → 2001:db8::10 |
| VPS | Máy chủ chạy website | Ubuntu, Debian, AlmaLinux |
| Web server | Nhận request HTTP/HTTPS | Nginx, Apache, Caddy |
Bạn cần phân biệt rõ giữa nơi mua tên miền và nơi quản lý DNS. Hai nơi này có thể là một, nhưng cũng có thể hoàn toàn khác nhau.
Ví dụ, bạn mua example.com ở nhà đăng ký A nhưng đang dùng name server của dịch vụ DNS B. Khi đó, bạn phải tạo bản ghi A ở DNS B, không phải ở giao diện DNS của nhà đăng ký A.
Đây là nguyên nhân phổ biến khiến nhiều người thêm bản ghi rất đúng nhưng tên miền vẫn không đổi. Họ đang sửa DNS ở nơi không có quyền trả lời chính thức cho domain.
Bạn có thể kiểm tra name server hiện tại bằng lệnh:
dig NS example.com +short
Kết quả có thể là:
ns1.dns-provider.net.
ns2.dns-provider.net.
Nếu kết quả này khác với name server ở trang quản lý tên miền, cần kiểm tra lại việc cập nhật NS tại nhà đăng ký.
Để hiểu nền tảng DNS rõ hơn, tham khảo tài liệu chính thức về DNS của Cloudflare. Dù bạn không dùng Cloudflare, cách DNS hoạt động vẫn giống nhau.
Đổi name server hay chỉ đổi bản ghi A
Có hai cách chính để trỏ tên miền về VPS:
- Giữ name server hiện tại và chỉ đổi bản ghi A.
- Đổi name server sang một hệ thống DNS khác, sau đó tạo bản ghi A tại đó.
Cách phù hợp phụ thuộc vào nơi bạn đang quản lý DNS và các dịch vụ đã gắn với tên miền.
Cách 1: Giữ name server, đổi bản ghi A
Đây là cách đơn giản nhất nếu DNS của bạn đang hoạt động ổn định. Bạn chỉ cần vào trang quản lý DNS hiện tại và tạo hoặc sửa bản ghi:
| Type | Name/Host | Value | TTL |
|---|---|---|---|
| A | @ | IP IPv4 của VPS | 300 hoặc 600 |
| A | www | IP IPv4 của VPS | 300 hoặc 600 |
Ví dụ:
A @ 103.123.45.67
A www 103.123.45.67
Ký hiệu @ thường đại diện cho domain gốc, tức example.com. Bản ghi www tương ứng với www.example.com.
Nếu giao diện DNS yêu cầu nhập hostname đầy đủ, bạn có thể cần điền:
example.com
www.example.com
Cách này ít rủi ro vì không làm ảnh hưởng đến MX record, SPF, DKIM, DMARC hoặc các bản ghi xác minh dịch vụ khác.
Cách 2: Đổi name server
Bạn nên đổi NS khi muốn chuyển toàn bộ việc quản lý DNS sang một nền tảng khác. Ví dụ, bạn muốn dùng DNS có giao diện tốt hơn, hỗ trợ API, DNSSEC, CDN hoặc proxy.
Quy trình thường là:
- Thêm domain vào nhà cung cấp DNS mới.
- Sao chép toàn bộ bản ghi DNS hiện có sang nơi mới.
- Lấy danh sách name server mới.
- Vào nhà đăng ký domain và cập nhật NS.
- Chờ hệ thống registry cập nhật delegation.
- Kiểm tra lại toàn bộ record sau khi NS có hiệu lực.
Ví dụ name server mới:
ns1.exampledns.net
ns2.exampledns.net
Cảnh báo: Nếu tên miền đang dùng email doanh nghiệp, đừng đổi name server trước khi sao chép bản ghi MX, SPF, DKIM và DMARC. Website có thể vẫn chạy nhưng email sẽ ngừng nhận hoặc gửi.
Bạn chỉ cần đổi A record nếu mục tiêu đơn giản là đưa website sang VPS mới. Đổi NS là thay đổi lớn hơn, phù hợp khi bạn chủ động chuyển cả hạ tầng DNS.
Cấu hình bản ghi DNS để website chạy
Với một website thông thường chạy trên VPS có IPv4, bạn cần tối thiểu hai bản ghi A:
A @ 103.123.45.67
A www 103.123.45.67
TTL nên để 300 giây nếu bạn đang migrate hoặc cần thử nghiệm. Sau khi hệ thống ổn định, bạn có thể nâng lên 3600 giây để giảm số lần truy vấn DNS.
Ngoài bản ghi A, bạn có thể gặp các loại record sau:
| Loại record | Dùng khi nào | Ví dụ |
|---|---|---|
| A | Trỏ domain đến IPv4 | example.com → 103.123.45.67 |
| AAAA | Trỏ domain đến IPv6 | example.com → 2001:db8::10 |
| CNAME | Bí danh cho hostname khác | www → example.com |
| MX | Nhận email | mail server |
| TXT | SPF, DKIM, DMARC, xác minh dịch vụ | chuỗi text |
| CAA | Giới hạn CA được cấp SSL | Let’s Encrypt, DigiCert |
| NS | Khai báo name server | ns1..., ns2... |
Bạn có thể dùng CNAME cho www thay vì A record:
CNAME www example.com
Cách này giúp www.example.com tự theo domain gốc nếu sau này bạn đổi IP. Tuy nhiên, một số hệ thống DNS hoặc cấu hình đặc biệt có thể không hỗ trợ CNAME theo cách bạn mong muốn ở root domain.
Domain gốc example.com thường không thể dùng CNAME trực tiếp theo chuẩn DNS truyền thống. Vì vậy, bản ghi A cho @ vẫn là lựa chọn phổ biến và an toàn nhất.
Sau khi DNS trả về đúng IP, bạn cần cấu hình web server nhận đúng domain. Với Nginx, file thường nằm trong /etc/nginx/sites-available/.
Ví dụ file /etc/nginx/sites-available/example.com:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/public;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
}
Sau đó kích hoạt cấu hình:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Nếu dùng nhiều website trên một VPS, server_name đặc biệt quan trọng. Nếu thiếu domain này, Nginx có thể trả về website mặc định hoặc website của domain khác.
Bạn có thể đọc thêm cách cài Nginx trên Ubuntu để kiểm tra cấu hình server block, log lỗi và quyền thư mục.
Chờ lan truyền: thực tế mất bao lâu
Khái niệm “DNS propagation” thường khiến nhiều người nghĩ rằng DNS cần 24 đến 48 giờ để cập nhật. Thực tế, thời gian có thể chỉ vài phút, nhưng cũng có trường hợp kéo dài hơn.
Có ba loại thay đổi cần phân biệt:
| Loại thay đổi | Thời gian thường gặp | Yếu tố ảnh hưởng |
|---|---|---|
| Sửa A/AAAA record | 5 phút đến vài giờ | TTL cũ, DNS resolver cache |
| Sửa CNAME | 5 phút đến vài giờ | TTL của record liên quan |
| Đổi name server | vài giờ đến 24-48 giờ | registry, cache delegation |
| Xóa record cũ | có thể lâu hơn TTL | cache ở ISP và thiết bị |
TTL không phải lời hứa tuyệt đối rằng đúng số giây là mọi nơi sẽ cập nhật. TTL là thời gian DNS resolver được phép cache kết quả trước khi hỏi lại.
Ví dụ bạn đang có A record cũ với TTL 86400. Dù bạn đổi record sang IP VPS mới, một số resolver có thể tiếp tục dùng IP cũ trong gần 24 giờ.
Nếu biết trước sẽ migrate server, hãy giảm TTL xuống 300 ít nhất vài giờ hoặc một ngày trước thời điểm chuyển. Sau khi TTL cũ hết hạn, bạn đổi IP sẽ nhanh hơn đáng kể.
Ngoài DNS resolver, máy tính và trình duyệt cũng có cache. Khi kết quả kiểm tra DNS đã đúng nhưng trình duyệt vẫn về web cũ, hãy thử:
curl -I http://example.com
Hoặc mở cửa sổ ẩn danh, đổi sang mạng 4G/5G, dùng DNS công cộng khác hoặc xóa DNS cache trên hệ điều hành.
Trên Windows:
ipconfig /flushdns
Trên Linux dùng systemd-resolved:
sudo resolvectl flush-caches
Trên macOS, lệnh có thể khác tùy phiên bản, nhưng thường dùng:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Kiểm chứng bằng dig/nslookup từ nhiều nơi
Đừng chỉ kiểm tra bằng trình duyệt. Trình duyệt cho biết website có mở hay không, nhưng không cho bạn biết lỗi nằm ở DNS, firewall, web server hay SSL.
Lệnh dig là công cụ đáng tin cậy trên Linux, macOS và WSL. Kiểm tra bản ghi A:
dig A example.com +short
Kết quả mong đợi:
103.123.45.67
Kiểm tra www:
dig A www.example.com +short
Nếu www dùng CNAME, kiểm tra đầy đủ:
dig www.example.com
Để hỏi trực tiếp DNS công cộng, tránh bị ảnh hưởng bởi DNS của mạng hiện tại:
dig @1.1.1.1 example.com A +short
dig @8.8.8.8 example.com A +short
Bạn cũng có thể kiểm tra name server có thẩm quyền:
dig NS example.com +short
Sau đó hỏi trực tiếp một authoritative name server:
dig @ns1.exampledns.net example.com A +short
Nếu authoritative name server đã trả đúng IP nhưng DNS công cộng vẫn trả IP cũ, lỗi thường là cache propagation. Nếu authoritative NS trả sai hoặc không có kết quả, bạn cần sửa DNS zone.
Trên Windows, dùng nslookup:
nslookup example.com
nslookup www.example.com 1.1.1.1
Để kiểm tra website có kết nối được đúng VPS không:
curl -I http://example.com
curl -Ik https://example.com
Nếu DNS đúng nhưng curl timeout, kiểm tra firewall, security group hoặc port trên VPS. Nếu nhận mã 404, 502, 503 hoặc trang mặc định, DNS có thể đúng nhưng Nginx/Apache chưa cấu hình đúng website.
Hãy kiểm tra các port đang lắng nghe:
sudo ss -tulpn | grep -E ':80|:443'
Và kiểm tra trạng thái Nginx:
sudo systemctl status nginx
Bẫy: quên bản ghi www, quên IPv6
Hai lỗi này rất nhỏ nhưng gây ra nhiều ticket hỗ trợ nhất.
Quên bản ghi www
Nhiều người chỉ tạo:
A @ 103.123.45.67
Khi đó example.com chạy bình thường, nhưng www.example.com không có DNS record. Người dùng gõ theo thói quen thêm www sẽ không vào được.
Bạn nên chọn một domain chuẩn:
- Dùng
example.comlàm domain chính và redirectwww.example.comvềexample.com. - Hoặc dùng
www.example.comlàm domain chính và redirect domain gốc vềwww.
Dù chọn cách nào, cả hai hostname vẫn cần resolve được. Đồng thời, SSL certificate cũng cần bao gồm cả example.com và www.example.com.
Quên bản ghi AAAA hoặc IPv6 cũ
Nếu domain có AAAA record trỏ tới IPv6 cũ nhưng VPS mới không cấu hình IPv6, một phần người dùng có thể không truy cập được website.
Nhiều hệ điều hành và mạng Internet sẽ ưu tiên IPv6 nếu có. Khi đó DNS trả cả A và AAAA, trình duyệt thử IPv6 trước rồi timeout hoặc kết nối đến server không đúng.
Kiểm tra AAAA record:
dig AAAA example.com +short
dig AAAA www.example.com +short
Nếu VPS không dùng IPv6, hãy xóa AAAA record cũ. Nếu VPS có IPv6, cần chắc chắn web server lắng nghe IPv6:
listen [::]:80;
listen [::]:443 ssl;
Ngoài ra, cần mở firewall IPv6 nếu UFW đang bật:
sudo ufw status verbose
Kiểm tra file /etc/default/ufw có dòng:
IPV6=yes
Sai lầm phổ biến
Sửa DNS ở sai nơi
Bạn vào nơi mua tên miền để sửa A record nhưng domain lại đang dùng name server của nhà cung cấp khác. Thay đổi đó không có hiệu lực vì DNS public không hỏi nơi bạn vừa sửa.
Luôn chạy dig NS example.com +short trước khi thao tác nếu không chắc domain đang dùng DNS ở đâu.
Chỉ trỏ domain gốc, bỏ quên www
Website chạy với example.com nhưng không chạy với www.example.com. Điều này ảnh hưởng trải nghiệm người dùng, SEO và việc xác minh SSL.
Tạo A record hoặc CNAME cho www, sau đó redirect hostname phụ về hostname chính.
Đổi name server làm mất email
Khi đổi NS, bạn quên sao chép MX, SPF, DKIM hoặc DMARC. Hậu quả là email doanh nghiệp không nhận được thư, thư vào spam hoặc không gửi được.
Trước khi đổi NS, export hoặc ghi lại toàn bộ DNS record hiện có. Đặc biệt chú ý các TXT record dài liên quan đến email.
Nghĩ DNS đúng là web chắc chắn chạy
DNS chỉ đưa người dùng đến VPS. Nếu Nginx chưa chạy, port 80/443 bị chặn, cấu hình server_name sai hoặc app lỗi, website vẫn không hoạt động.
Bạn cần kiểm tra theo thứ tự: DNS, kết nối IP, firewall, web server, ứng dụng, SSL.
Bỏ qua IPv6
A record đúng nhưng AAAA record cũ vẫn tồn tại. Một số người dùng sẽ bị lỗi, còn bạn có thể không tái hiện được lỗi nếu mạng của bạn ưu tiên IPv4.
Nếu chưa dùng IPv6, xóa AAAA cũ là phương án an toàn hơn.
Đổi record liên tục khi chưa hết TTL
Bạn đổi IP nhiều lần vì thấy mạng nhà mình chưa cập nhật. Điều này làm bạn khó biết record nào đang có hiệu lực và kéo dài thời gian xử lý sự cố.
Hãy kiểm tra bằng dig @1.1.1.1 và authoritative NS trước khi tiếp tục chỉnh sửa.
Câu hỏi thường gặp
Trỏ tên miền về VPS mất bao lâu?
Nếu chỉ sửa A record với TTL thấp, thường mất từ vài phút đến vài giờ. Nếu đổi name server, có thể mất vài giờ và đôi khi đến 24-48 giờ tùy registry, DNS resolver và cache cũ.
Có cần đổi name server để trỏ domain về VPS không?
Không nhất thiết. Nếu DNS hiện tại hoạt động bình thường, bạn chỉ cần đổi bản ghi A của domain gốc và www sang IP VPS mới.
Có thể trỏ nhiều domain về cùng một VPS không?
Có. Bạn chỉ cần tạo A record cho từng domain cùng trỏ về một IP VPS, sau đó cấu hình thêm server block Nginx hoặc virtual host Apache cho từng domain.
VPS đổi IP thì cần làm gì?
Sửa A record của domain và www sang IP mới. Nếu có AAAA record thì kiểm tra IPv6 tương ứng, sau đó reload hoặc kiểm tra lại web server trên VPS mới.
Tại sao dig ra IP đúng nhưng trình duyệt vẫn vào web cũ?
Trình duyệt, hệ điều hành, router hoặc ISP có thể đang cache DNS. Hãy thử xóa DNS cache, dùng cửa sổ ẩn danh, kiểm tra bằng curl, đổi sang mạng khác hoặc truy vấn DNS công cộng.
Có cần dùng cả A và CNAME cho www không?
Không cần. Bạn chọn một trong hai: tạo A record cho www trỏ thẳng IP VPS, hoặc tạo CNAME www trỏ đến domain gốc. CNAME thường tiện hơn nếu bạn hay đổi IP domain chính.
Tóm tắt nhanh
- Trỏ tên miền là quá trình liên kết domain với IP VPS thông qua DNS record.
- Kiểm tra name server hiện tại trước khi sửa DNS để tránh thao tác ở sai nơi.
- Với website cơ bản, tạo A record cho
@vàwwwcùng trỏ về IPv4 của VPS. - Chỉ đổi name server khi bạn muốn chuyển toàn bộ quản lý DNS, không phải chỉ để đổi IP website.
- DNS đúng chưa đủ, VPS vẫn cần mở port
80,443và cấu hình Nginx/Apache đúngserver_name. - Luôn kiểm tra cả A, AAAA,
www, SSL và email record sau khi thay đổi DNS. - Dùng
dig,nslookupvàcurlđể xác định chính xác lỗi nằm ở DNS hay ở web server.


