Vibe Code
Giáo trình/Phần 1 — Trang web đầu tiên

Tên miền, DNS, HTTPS và lớp bảo vệ biên

Lớp 1 của sơ đồ. Mua tên miền ở đâu, chuyển về Cloudflare, bản ghi nào cần, vì sao HTTPS tự có, và WAF/CDN thật sự làm gì cho bạn.

Cấp 135 phút làm

Đây là lớp 1 trong sơ đồ Vibe Stack: mọi lượt truy cập đều đi qua đây trước khi chạm tới mã của bạn. Làm đúng một lần rồi quên luôn; làm sai thì web lúc vào được lúc không, và bạn mất cả ngày đoán.

Bốn thứ trong lớp này, nói bằng tiếng người

Thứ Nó là gì Nếu thiếu
Tên miền Địa chỉ người ta gõ: congty.com Khách phải nhớ abc-xyz.pages.dev
DNS Cuốn danh bạ: tên miền → máy chủ nào Gõ tên miền ra lỗi "không tìm thấy"
SSL/HTTPS Khóa và ổ khóa trên thanh địa chỉ Trình duyệt dán nhãn "Không bảo mật"
CDN + WAF Bộ đệm gần người dùng + tường lọc tấn công Chậm, và hứng trọn mọi bot dò

Mua tên miền ở đâu

Ba lựa chọn, và chúng khác nhau thật sự:

1. Cloudflare Registrar — mua thẳng trong dashboard. Bán đúng giá gốc, không phụ phí, không tăng giá năm thứ hai. DNS và HTTPS gắn sẵn, không phải cấu hình gì. Đây là lựa chọn mặc định cho .com, .net, .dev, .io.

2. Nhà đăng ký trong nước (P.A Việt Nam, Mắt Bão, Nhân Hòa…) — bắt buộc cho tên miền .vn, vì .vn do VNNIC quản lý và Cloudflare không bán. Cần giấy tờ: cá nhân thì căn cước, doanh nghiệp thì giấy đăng ký kinh doanh.

3. Nhà đăng ký quốc tế khác (Namecheap, GoDaddy…) — dùng được, nhưng để ý giá năm thứ hai thường cao hơn năm đầu nhiều lần.

`.vn` hay `.com` — câu hỏi khách luôn hỏichuyên gia insight & case thực tế

Câu trả lời tôi đưa, sau nhiều lần làm cho doanh nghiệp vừa và nhỏ:

  • Bán hàng trong nước, khách là người Việt → .vn hoặc .com.vn. Nó tạo cảm giác "công ty thật, có pháp nhân", và trong vài ngành (xây dựng, vận tải, dịch vụ cho cơ quan nhà nước) đó là yếu tố thật khi xét thầu.
  • Có yếu tố nước ngoài, hoặc là sản phẩm công nghệ → .com.
  • Ngân sách rất chặt, dùng nội bộ → một subdomain của tên miền sẵn có, 0 đồng.

Cái bẫy hay gặp: khách đòi cả hai rồi trỏ cả hai vào cùng một web. Làm được, nhưng phải chọn một cái làm chính và cái kia chuyển hướng 301 về nó — không thì Google thấy hai website giống hệt nhau và chia đôi điểm. Đây là việc 5 phút mà rất nhiều web Việt Nam bỏ qua.

Chuyển tên miền về Cloudflare quản lý DNS

Kể cả khi mua ở nơi khác, bạn vẫn nên để Cloudflare quản lý DNS — miễn phí, và nó mở ra toàn bộ lớp 1.

  1. Dashboard → Add a site → gõ tên miền → chọn gói Free.
  2. Cloudflare quét các bản ghi đang có và hiện ra. Đối chiếu kỹ bước này — nhất là bản ghi MX (email). Thiếu MX là mất email công ty, và đây là sự cố nặng nhất của bài này.
  3. Cloudflare đưa cho bạn 2 nameserver kiểu xxx.ns.cloudflare.com.
  4. Về trang nhà đăng ký → đổi nameserver sang 2 cái đó.
  5. Chờ. Thường 5 phút – 2 giờ, đôi khi tới 24 giờ.
Đổi nameserver là chuyển TOÀN BỘ, không riêng web

Khi đổi nameserver, Cloudflare nắm mọi bản ghi của tên miền: web, email, bản ghi xác minh, subdomain nội bộ. Bản ghi nào bạn quên chép sang là dịch vụ đó chết ngay.

Danh sách phải chép đủ, chụp màn hình trang DNS cũ trước khi đổi: - MX — email. Quên là thư không về. - TXT bắt đầu bằng v=spf1 — chống giả mạo thư. Quên là thư gửi đi vào hộp rác. - TXT tên _dmarc, và bản ghi DKIM (thường là CNAME hoặc TXT tên kiểu selector._domainkey). - TXT xác minh Google Search Console, xác minh Zalo OA, xác minh Facebook. - Các subdomain đang chạy: mail, ftp, vpn, crm…

Làm vào sáng thứ Ba, đừng làm chiều thứ Sáu. Nếu hỏng, bạn có cả tuần để sửa thay vì ngồi với cuộc gọi của khách vào Chủ nhật.

Các loại bản ghi bạn thật sự cần

Chỉ bốn loại, không cần học hết:

A      congty.com        →  203.0.113.10      (trỏ tới một địa chỉ IP)
CNAME  www               →  congty.com         (bí danh, trỏ tới tên khác)
MX     congty.com        →  máy chủ nhận thư
TXT    congty.com        →  "v=spf1 ..."       (chữ, dùng để xác minh/chống giả mạo)

Với app trên Cloudflare, bạn gần như không tự tạo A hay CNAME: vào Pages/Workers → Custom domains → nhập tên miền → Cloudflare tự thêm bản ghi đúng. Đây là cách ít sai nhất.

Đám mây màu cam bên cạnh mỗi bản ghi là nút quan trọng nhất của trang DNS:

  • 🟠 Cam (Proxied) — lưu lượng đi qua Cloudflare: có CDN, có WAF, có HTTPS, ẩn IP thật của bạn. Dùng cho web.
  • ⬜ Xám (DNS only) — Cloudflare chỉ trả lời danh bạ rồi đứng ngoài. Bắt buộc xám cho bản ghi MX và các bản ghi email.
Bật cam cho bản ghi email là mất thư

Cloudflare proxy chỉ hiểu web (cổng 80/443). Bật cam cho MX hoặc cho máy chủ thư là thư không vào được, và lỗi báo ra chẳng liên quan gì tới DNS.

Luật: web thì cam, thư thì xám.

HTTPS — tự có, nhưng biết một thiết lập

Khi tên miền đã ở Cloudflare, chứng chỉ HTTPS được cấp tự động và tự gia hạn. Không phải mua, không phải nhớ ngày hết hạn.

Hai việc cần bật, một lần, trong SSL/TLS:

  1. Chế độ mã hóa: Full (strict). Đừng để Flexible — nó mã hóa đoạn từ khách tới Cloudflare nhưng để hở đoạn sau, mà thanh địa chỉ vẫn hiện ổ khóa. Với Pages/Workers thì phía sau luôn là HTTPS, nên Full (strict) chạy đúng.
  2. Always Use HTTPS: bật. Ai gõ http:// sẽ được đẩy sang https://.

Kiểm bằng một lệnh:

curl -I http://congty.com
# phải thấy: HTTP/1.1 301 Moved Permanently  +  Location: https://congty.com/

CDN và WAF — bạn được gì mà không phải làm gì

CDN: file tĩnh (ảnh, CSS, JS) được giữ sẵn tại điểm mạng gần người dùng. Khách ở Thanh Hóa không phải chờ dữ liệu đi vòng qua Singapore. Đây là lý do web trên Cloudflare mở nhanh hơn hẳn hosting chia sẻ, mà bạn không viết thêm dòng mã nào.

Điều khiển bộ đệm bằng file public/_headers:

/assets/*
  Cache-Control: public, max-age=31536000, immutable

/*
  X-Content-Type-Options: nosniff
  Referrer-Policy: strict-origin-when-cross-origin
`immutable` nghĩa là "đời này không đổi nữa"

Đặt immutable cho một file rồi sửa nội dung file đó mà giữ nguyên tên thì trình duyệt của người dùng không bao giờ tải lại — họ thấy bản cũ hàng tháng, trong khi bạn mở máy mình thì thấy bản mới và tưởng đã xong.

Luật đi kèm: file có immutable thì đổi nội dung phải đổi TÊN (logo-b.png → logo-c.png, app.3f91.css → app.7a20.css), rồi sửa mọi chỗ tham chiếu. Script build nên tự gắn mã băm vào tên file.

WAF và chống DDoS: gói Free đã có lớp lọc cơ bản, tự động, không cần cấu hình. Hai thứ nên bật thêm khi app có đăng nhập:

  • Bot Fight Mode (Security → Bots) — chặn bot dò tự động.
  • Một quy tắc WAF cho đường đăng nhập, nếu bạn bị dò mật khẩu. Nhưng đọc kỹ cảnh báo ở Bảo mật & rate limit trước: chặn theo IP ở Việt Nam dễ chặn oan hàng trăm người thật, vì mạng 4G gộp rất nhiều người vào cùng một IP.

Kiểm cả lớp 1 trong 2 phút

nslookup congty.com                 # DNS đã trả về chưa
curl -I https://congty.com          # 200 + có dòng server: cloudflare
curl -I http://congty.com           # 301 sang https
curl -I https://www.congty.com      # www cũng vào được

Và một việc thủ công không thay được: mở trên điện thoại dùng 4G, không phải Wi-Fi nhà. Nhà mạng Việt Nam có bộ nhớ đệm DNS riêng, và đôi khi bạn vào được còn khách thì chưa.

Tôi chờ hai ngày vì một dấu chấmngười dùng bình thường góp ý

Tôi điền congty.com. (có dấu chấm cuối) vào ô nameserver, và nó im lặng không chạy. Không báo lỗi gì cả.

Hai điều tôi học được, đều không có trong tài liệu nào: 1. Chép dán, đừng gõ tay mọi thứ trong trang DNS. 2. Khi chờ DNS, dùng dnschecker.org để xem thế giới đã thấy chưa. Máy bạn nhớ bản cũ rất dai; có lần tôi tưởng chưa xong trong khi mọi nơi khác đã chạy từ lâu. Muốn xóa bộ nhớ DNS của Windows: ipconfig /flushdns.

Nhờ AI rà bản ghi DNS trước khi đổichuyên gia thực thi

Chụp màn hình trang DNS cũ, hoặc xuất ra file, rồi:

Đây là danh sách bản ghi DNS hiện tại của congty.com.
Tôi sắp chuyển nameserver sang Cloudflare.

Liệt kê giúp tôi theo 3 nhóm:
1. BẮT BUỘC chép sang, kèm hậu quả nếu quên (nhất là email: MX, SPF,
   DKIM, DMARC, và các bản ghi xác minh dịch vụ)
2. Nên để DNS only (xám), không bật proxy
3. Có thể bỏ, vì không còn dùng — nhưng nói rõ căn cứ

Không đoán. Bản ghi nào không rõ mục đích thì ghi "chưa rõ, giữ lại".

Câu cuối là câu phải có. Trong DNS, giữ thừa một bản ghi vô hại hơn bỏ nhầm một bản ghi rất nhiều.

Chốt review bài nàychuyên gia review
  • Đủ: mua tên miền ở đâu, chuyển DNS an toàn, 4 loại bản ghi, cam/xám, HTTPS đúng chế độ, CDN + _headers, WAF cơ bản, bộ lệnh kiểm.
  • Đã trả giá thật: bẫy mất MX, bẫy bật cam cho email, bẫy immutable không đổi tên file.
  • Chưa nói: Cloudflare Access, mTLS, DNS cho hệ thống nhiều vùng. Vượt nhu cầu ở mức này.
  • Rủi ro còn lại: .vn cần giấy tờ và thời gian xử lý thật (có thể vài ngày làm việc). Đừng hứa với khách ngày lên sóng dựa trên giả định đăng ký xong trong hôm nay.
Bài tập chốt
  1. Gắn một tên miền (hoặc subdomain) thật vào project Cấp 1 của bạn.
  2. Chạy đủ 4 lệnh kiểm ở trên, chép kết quả vào README.
  3. Đặt public/_headers với immutable cho /assets/*, rồi tự chứng minh bẫy: sửa nội dung một file trong assets mà giữ nguyên tên, deploy, mở lại bằng cửa sổ thường — thấy bản cũ. Rồi đổi tên file và sửa tham chiếu — thấy bản mới.

Việc 3 mất 10 phút và cứu bạn khỏi một cuộc gọi kiểu "em sửa rồi mà anh vẫn thấy cái cũ" sau này.