Chương 11. Cài đặt tên miền
Back To BlogsChương 11. Cài đặt tên miền
📚 Mục lục sáchQua Chương 10, tiệm bánh của chúng ta đã có đủ dữ liệu thật, đủ chức năng để bán hàng thật — nhưng vẫn đang "sống" sau một địa chỉ kỹ thuật khó nhớ, kiểu preview hoặc may-chu-cua-ban.com/sweet-home-bakery. Chương này là bước cuối cùng để đưa nó ra ánh sáng: gắn một tên miền thật, có SSL đàng hoàng, để bạn có thể tự tin gửi đường link cho khách hàng đầu tiên.
Vì sao cần một tên miền cho riêng bạn
Ở Chương 2 chúng ta đã nhắc: hosting và tên miền là "địa chỉ" trên Internet để ai gõ đúng tên là vào được trang của bạn. Nhưng có tên miền không chỉ để "vào được" — nó còn là:
- Uy tín thương hiệu:
sweethomebakery.io.vnhoặcsweetbakery.ezyplatform.comsẽ đáng tin hơn hẳn một chuỗi ký tự ngẫu nhiên kèm địa chỉ IP. - Điều kiện bắt buộc để có SSL đúng nghĩa: trình duyệt chỉ cấp chứng chỉ HTTPS hợp lệ cho một tên miền cụ thể, không cấp cho địa chỉ IP trần.
- Nền tảng của SEO: Google lập chỉ mục theo tên miền — nhắc lại đúng tinh thần đã nói ở Chương 10, SEO vẫn quan trọng kể cả khi AI đã "biết mọi thứ".
- Điều kiện để các dịch vụ bên ngoài tin bạn: ở Chương 12 sắp tới, Google/Facebook (đăng nhập), cổng thanh toán, đơn vị vận chuyển đều yêu cầu khai báo một tên miền thật khi tích hợp — không chấp nhận địa chỉ IP hay localhost.
Hai cách để có một tên miền
EzyPlatform cho bạn hai lựa chọn, tuỳ vào việc bạn đã sẵn sàng đầu tư một tên miền riêng hay chỉ muốn có ngay một địa chỉ tử tế để demo:
| Tiêu chí | Cách 1 — Tên miền phụ miễn phí | Cách 2 — Tên miền riêng |
|---|---|---|
| Chi phí | Miễn phí | Phải mua (thường vài trăm nghìn đồng/năm) |
| Ví dụ | sweetbakery.ezyplatform.com |
sweethomebakery.io.vn |
| Có cần khai báo DNS không | Có — nhưng chỉ một bản ghi A duy nhất cho tên miền phụ, không cần mua tên miền mới | Có — nhiều bản ghi DNS hơn (web, admin, help...) cho tên miền riêng của bạn |
| Cấu hình ở đâu | EzySupport → Cân bằng tải → Nginx | Nhà cung cấp tên miền (DNS) + Bảng điều khiển Web của hosting |
| Phù hợp khi nào | Đang thử nghiệm, demo nhanh nhiều dự án trên cùng một máy chủ (đúng như trường hợp tiệm bánh của chúng ta) | Đã sẵn sàng ra mắt thương hiệu chính thức, cần một địa chỉ độc lập hoàn toàn |
Hai cách này không loại trừ nhau — bạn hoàn toàn có thể dùng tên miền phụ miễn phí cho một trang demo, và song song đó chuẩn bị tên miền riêng cho website chính thức. Phần dưới đây sẽ đi chi tiết từng cách, theo đúng thứ tự các bước bạn sẽ làm.
Cách 1 — Tên miền phụ miễn phí bằng EzySupport
Đây là cách nhanh nhất: không cần mua tên miền, hầu hết thao tác đều nằm trên trang quản trị. Plugin EzySupport (đã cài từ Chương 3) có sẵn một màn hình cho phép bạn tạo bao nhiêu tên miền phụ tuỳ thích dưới tên miền ezyplatform.com, mỗi tên miền phụ có thể trỏ thẳng vào một trang cụ thể trong site của bạn — cực kỳ tiện khi bạn có nhiều dự án demo (như tiệm bánh Sweet Home Bakery) đang sống chung trên một máy chủ. Lưu ý là bạn vẫn cần trỏ DNS cho tên miền phụ này trước, chỉ là đơn giản hơn nhiều so với Cách 2 vì không phải mua gì cả.
Bước 1: Trỏ tên miền phụ về IP máy chủ (DNS)
Dù là tên miền phụ miễn phí, nó vẫn phải được trỏ về đúng địa chỉ IP máy chủ trước khi làm bất kỳ bước nào khác — vào thẳng trang quản lý DNS của tên miền ezyplatform.com, thêm một bản ghi loại A với Name/Host là phần tên miền phụ bạn muốn dùng (ví dụ sweetbakery) và Value là địa chỉ IP máy chủ.
sweetbakery), Value là địa chỉ IP máy chủ của bạn.Đây là bước bắt buộc, không được bỏ qua: nếu tên miền phụ chưa thật sự trỏ về IP máy chủ, các bước cấu hình ở EzySupport bên dưới vẫn lưu được bình thường, nhưng đến lúc cấp SSL, Certbot sẽ không xác thực được tên miền và báo lỗi. Hãy đợi vài phút để DNS cập nhật xong rồi mới tiếp tục.
Bước 2: Vào màn hình Nginx của EzySupport
Truy cập menu EzySupport → Cân bằng tải → Nginx trên trang quản trị.
Bước 3: Thêm cài đặt tên miền
Trong danh sách Cấu hình miền phụ, bấm nút Thêm. Điền tên miền phụ bạn muốn dùng — ở đây tôi chọn sweetbakery.ezyplatform.com — giữ nguyên kiểu Miễn phí, rồi đặt một cái tên gợi nhớ ở ô Tên dịch vụ để sau này dễ nhận ra trong danh sách, ví dụ "Tiệm bánh ngọt".
Ngay trong form này còn có bốn ô tuỳ chọn — Tên trang, Tiêu đề trang, Biểu tượng trang (favicon) và Logo trang — chính là nơi bạn khai riêng thương hiệu cho tên miền phụ này. Nếu bạn có nhiều dự án khác nhau chạy chung một EzyPlatform (ví dụ tiệm bánh, một landing page, một blog cá nhân...), mỗi tên miền phụ có thể mang một bộ nhận diện (tên, tiêu đề, icon, logo) hoàn toàn riêng biệt mà không đụng chạm đến các dự án còn lại.
Bước 4: Kiểm tra danh sách
Sau khi lưu, tên miền phụ vừa tạo sẽ xuất hiện trong danh sách Cấu hình miền phụ, kèm các nút hành động: cấu hình (bánh răng), xem, sửa, xoá.
sweetbakery.ezyplatform.com đã xuất hiện trong danh sách — bấm vào biểu tượng bánh răng để cấu hình chi tiết.Bước 5: Trỏ đúng vào trang bạn muốn hiển thị
Bấm vào biểu tượng bánh răng, một hộp thoại Cấu hình tên miền hiện ra, chứa sẵn một mẫu cấu hình Nginx. Nhìn có vẻ phức tạp, nhưng bạn chỉ cần quan tâm đúng một chỗ: dòng rewrite ^/$ / break; bên trong khối if ($uri = "/").
là nơi bạn khai báo trang muốn hiển thị khi khách vào thẳng tên miền phụ này. chính là "công tắc" quyết định khi khách gõ sweetbakery.ezyplatform.com (không có đường dẫn phía sau), Nginx sẽ tự động chuyển hướng nội bộ sang trang nào. Tôi thay bằng đúng slug của trang tiệm bánh — sweet-home-bakery — rồi bấm Lưu. Sau khi lưu xong, tôi bấm luôn nút Cài đặt SSL ngay trong cùng hộp thoại để tiến hành cài đặt SSL cho tên miền này.
bằng sweet-home-bakery và bấm Lưu, bấm luôn nút Cài đặt SSL màu cam ngay bên cạnh để cấp chứng chỉ HTTPS cho tên miền này.Nếu bạn không thay , cứ để nguyên như mặc định — tên miền phụ khi đó sẽ hiển thị đúng trang chủ mặc định của toàn bộ site, không riêng cho một trang nào.
Bước 6: Cấp SSL
Bấm Cài đặt SSL, Certbot sẽ tự xin chứng chỉ miễn phí cho sweetbakery.ezyplatform.com và cấu hình luôn HTTPS — chỉ cần đợi vài giây đến khi thông báo thành công hiện lên.
Truy cập thử https://sweetbakery.ezyplatform.com, bạn sẽ thấy thẳng trang tiệm bánh, với ổ khoá HTTPS đầy đủ:
sweetbakery.ezyplatform.com chạy HTTPS, hiển thị thẳng trang tiệm bánh nhờ cấu hình ở Bước 5.Bấm Cài đặt SSL xong, Nginx sẽ được Certbot tự động tải lại giúp bạn, không cần làm gì thêm. Nhưng với bất kỳ thay đổi nào khác sau này — sửa lại cấu hình , đổi cổng, thêm/sửa tên miền phụ khác... — bạn phải tự tay quay lại trang tổng quan Nginx, bấm Kiểm tra trước để chắc chắn cấu hình không có lỗi cú pháp, rồi mới bấm Tải lại để áp dụng thay đổi. Nginx đang phục vụ tất cả tên miền trên máy chủ, một cấu hình sai có thể ảnh hưởng đến những tên miền khác chứ không riêng gì tên miền bạn vừa sửa.
Cách 2 — Mua và trỏ một tên miền riêng
Khi đã sẵn sàng ra mắt chính thức, bạn sẽ muốn một tên miền độc lập hoàn toàn, không mang đuôi ezyplatform.com. Cách này cần thêm vài bước chuẩn bị so với Cách 1.
Mua tên miền
Hãy mua tên miền ở bất kỳ nhà cung cấp nào — ví dụ Mắt Bão, PA Vietnam, Namecheap, giống gợi ý ở Chương 3. Vài lưu ý ngắn khi chọn tên:
- Ngắn, dễ đọc, dễ đánh máy: khách hàng thường gõ lại tên miền từ trí nhớ, càng dài càng dễ gõ sai.
- Trùng hoặc gần đúng với tên cửa hàng: ví dụ cửa hàng "Sweet Home Bakery" nên ưu tiên
sweethomebakery.io.vnhoặcsweethomebakery.comtrước khi nghĩ đến tên khác. - Đuôi
.vnnếu phục vụ khách Việt Nam: quen thuộc hơn với khách trong nước, dù thủ tục mua thường yêu cầu thêm giấy tờ so với.com.
Nếu bạn đang dùng dịch vụ hosting có sẵn (mục "Dùng dịch vụ hosting có sẵn" ở Chương 3), nhiều nhà cung cấp đã tự động trỏ tên miền và cấp SSL thay bạn ngay trong gói dịch vụ — hãy kiểm tra tài liệu của họ trước, có thể bạn sẽ bỏ qua được toàn bộ phần trỏ DNS thủ công bên dưới.
Trỏ tên miền về máy chủ (DNS)
Nếu bạn tự quản lý máy chủ (mục "Tự cài trên máy chủ riêng" ở Chương 3), bạn cần khai báo tại nhà cung cấp tên miền một vài bản ghi DNS loại A, trỏ thẳng về địa chỉ IP máy chủ của bạn:
| Bản ghi (Host/Name) | Loại | Trỏ về | Dùng cho |
|---|---|---|---|
@ |
A | IP máy chủ | Website công khai — nơi khách hàng ghé thăm. |
admin |
A | IP máy chủ | Trang quản trị EzyPlatform. |
help |
A | IP máy chủ | Cổng hỗ trợ khách hàng, nếu bạn dùng thêm EzySupport cho việc này. |
Giao diện quản lý DNS sẽ khác nhau tuỳ nhà cung cấp, nhưng nguyên lý luôn giống nhau: chọn loại bản ghi A, đặt tên (Name/Host) và điền địa chỉ IP máy chủ vào ô giá trị (Value) — giống hệt màn hình thêm bản ghi A cho tên miền phụ ở Bước 1 của Cách 1, chỉ khác là ở đây bạn thêm nhiều bản ghi hơn cho tên miền riêng của mình.
Sơ đồ dưới đây tóm tắt hành trình một yêu cầu đi từ trình duyệt của khách đến đúng EzyPlatform của bạn:
flowchart LR
U["Trình duyệt của khách<br/>gõ sweethomebakery.io.vn"] --> DNS["Máy chủ DNS<br/>tra bản ghi A"]
DNS --> IP["Trả về IP<br/>máy chủ của bạn"]
IP --> NGINX["Nginx trên máy chủ<br/>(cổng 80/443)"]
NGINX -->|"sweethomebakery.io.vn"| WEB["EzyPlatform — Web<br/>(cổng nội bộ 8080)"]
NGINX -->|"admin.sweethomebakery.io.vn"| ADMIN["EzyPlatform — Admin<br/>(cổng nội bộ 9090)"]
classDef browser fill:#6366f1,stroke:#4338ca,color:#ffffff;
classDef dns fill:#f59e0b,stroke:#b45309,color:#ffffff;
classDef proxy fill:#db2777,stroke:#9d174d,color:#ffffff;
classDef app fill:#10b981,stroke:#047857,color:#ffffff;
class U browser;
class DNS,IP dns;
class NGINX proxy;
class WEB,ADMIN app;
linkStyle default stroke:#94a3b8,stroke-width:1.5px;
Nên đợi DNS cập nhật hoàn tất (thường vài phút đến vài giờ) rồi mới cấp SSL ở bước sau — cấp SSL khi DNS chưa trỏ xong gần như chắc chắn sẽ thất bại.
Hãy viết giúp tôi lệnh để kiểm tra xem tên miền sweethomebakery.io.vn đã trỏ đúng về địa chỉ IP 203.0.113.10 hay chưa, và giải thích ngắn gọn cách đọc kết quả.
Khai báo tên miền trong Bảng điều khiển Web của hosting
Ngoài trỏ DNS, nhiều dịch vụ hosting (như danh mục ở Chương 3) còn có riêng một Bảng điều khiển Web để bạn khai báo tên miền chính thức đang dùng cho website — tách biệt với trang quản trị EzyPlatform. Tại đây bạn nhập tên miền vào ô Đường dẫn website, đồng thời khai báo cả tên miền web lẫn tên miền admin vào Thuộc tính của website ở khoá cors.allowed_origins, phân tách nhau bằng dấu phẩy — thiếu bước này, trình duyệt có thể chặn một số yêu cầu gọi API giữa hai tên miền vì chính sách CORS.
cors.allowed_origins.Cấp SSL cho tên miền riêng
Nếu nhà cung cấp hosting chưa tự động cấp SSL, bạn làm hoàn toàn tương tự các Bước 1–6 của Cách 1 ở trên: vào EzySupport → Cân bằng tải → Nginx, thêm cài đặt tên miền — chỉ khác là lần này nhập đúng tên miền thật của bạn (ví dụ sweethomebakery.io.vn) thay vì tên miền phụ .ezyplatform.com, và không cần thay vì đây là toàn bộ website chính, không phải một trang riêng lẻ như tình huống demo ở Cách 1. Sau đó vẫn kiểm tra, tải lại Nginx rồi bấm Cài đặt SSL như cũ.
Nếu bạn thành thạo kỹ thuật và muốn tự làm bằng tay qua SSH thay vì qua giao diện EzySupport, cách làm tương đương là cài Nginx (sudo apt install -y nginx), tự viết cấu hình reverse proxy về đúng cổng nội bộ của EzyPlatform (nhớ đặt client_max_body_size đủ lớn, ví dụ 50M, để không chặn nhầm việc tải ảnh sản phẩm lên), cài Certbot (sudo apt install -y certbot python3-certbot-nginx) rồi chạy sudo certbot --nginx -d sweethomebakery.io.vn -m ban@sweethomebakery.io.vn --agree-tos. Nhưng với hầu hết người đọc cuốn sách này, làm qua giao diện EzySupport là đủ và an toàn hơn.
Cập nhật cấu hình chia sẻ access token
Quay lại đúng phần "Cấu hình các tên miền được phép chia sẻ access token" ở Chương 3 — bước đó bạn có thể mới chỉ khai với tên miền tạm hoặc preview. Giờ đã có tên miền thật, hãy cập nhật lại đúng cặp tên-miền:tên-miền-được-chia-sẻ tại {đường-dẫn-admin-của-bạn}/settings/regular theo tên miền chính thức, để tránh lỗi khi Preview hoặc đăng nhập giữa sweethomebakery.io.vn và admin.sweethomebakery.io.vn — đây chính xác là kiểu tên miền nhiều thành phần (.io.vn) mà Chương 3 đã cảnh báo dễ gây lỗi Preview nếu quên khai báo.
Kiểm tra lại trước khi công bố
Trước khi gửi đường link cho khách hàng đầu tiên, hãy rà lại nhanh danh sách sau:
- Ổ khoá HTTPS hiển thị đầy đủ: mở cả hai tên miền web và admin trên trình duyệt, không còn cảnh báo "Không an toàn" (Not secure).
- Đăng nhập trang quản trị qua tên miền mới: thử đăng nhập lại vào
admin.sweethomebakery.io.vnđể chắc chắn access token vẫn hoạt động sau khi đổi tên miền. - Đặt thử một đơn hàng: đi lại toàn bộ hành trình mua hàng đã ghép ở Chương 10 (thêm giỏ hàng, thanh toán, xem đơn) ngay trên tên miền thật, không phải trên preview.
Xong danh sách trên, bạn đã có một website thật, chạy trên tên miền của chính mình, sẵn sàng để đội ngũ tự động ở Chương 12 gửi những email đầu tiên với đường link trỏ đúng về nhà của nó.
📌 Tóm tắt chương
- Tên miền không chỉ để "vào được trang" — nó còn là điều kiện để có SSL hợp lệ, để SEO hoạt động, và để các dịch vụ bên ngoài (đăng nhập, thanh toán, vận chuyển) chấp nhận tích hợp.
- Cách 1 — miễn phí, nhanh: tạo tên miền phụ dưới
ezyplatform.comqua EzySupport → Cân bằng tải → Nginx, không cần mua gì, không cần biết DNS; dùng biếnđể trỏ thẳng vào một trang cụ thể. - Cách 2 — chuyên nghiệp: mua tên miền riêng, trỏ bản ghi DNS loại A về IP máy chủ, khai báo lại trong Bảng điều khiển Web của hosting (kèm
cors.allowed_origins), rồi cấp SSL bằng đúng quy trình EzySupport ở Cách 1. - Dù chọn cách nào, luôn Kiểm tra trước khi Tải lại Nginx — một cấu hình sai có thể ảnh hưởng đến mọi tên miền khác trên cùng máy chủ.
- Cập nhật lại cấu hình chia sẻ access token (Chương 3) theo đúng tên miền thật, rồi rà lại danh sách kiểm tra (HTTPS, đăng nhập, đặt thử đơn hàng) trước khi công bố.
Young Monkeys - Founder