Bạn đã tạo một website bằng AI, và nó chạy hoàn hảo, nhưng chỉ trên máy tính của bạn. Thanh địa chỉ hiện localhost:3000, hoặc có thể là một dãy số như 203.0.113.10. Bạn gửi đường dẫn cho một người bạn và nó không mở được.
Đó không phải là lỗi. Đó là khoảng cách giữa việc chạy một website và xuất bản nó, và mảnh ghép còn thiếu hầu như luôn là một tên miền. Hướng dẫn này giải thích sự khác nhau giữa những địa chỉ bạn có thể đang dùng, vì sao phần lớn trong số đó không thể là địa chỉ thật của website, và cách chuyển sang một tên miền thật trên bất kỳ loại hosting nào.
Trong hướng dẫn này
Bốn loại địa chỉ
Có bốn cách khác nhau để đến được một website. Chúng trông giống nhau, nhưng hoạt động rất khác.
| Loại địa chỉ | Ví dụ | Ai có thể mở |
|---|---|---|
| localhost | http://localhost:3000 | Chỉ máy tính đang chạy nó |
| IP mạng nội bộ | http://192.168.1.20 | Các thiết bị dùng chung Wi-Fi hoặc bộ định tuyến |
| IP máy chủ | http://203.0.113.10 | Bất kỳ ai trực tuyến, nhưng xem bên dưới |
| Tên miền | https://mysite.com | Bất kỳ ai, ở bất kỳ đâu |
Các con số trong hướng dẫn này chỉ là ví dụ. 203.0.113.x là dải địa chỉ dành riêng cho ví dụ, nên nó không bao giờ trỏ đến một máy chủ thật.
Vì sao localhost chỉ dùng được với bạn
localhost (còn viết là 127.0.0.1) có nghĩa là “chính cỗ máy này”. Khi bạn gõ nó, máy tính của bạn nói chuyện với chính nó. Khi bạn của bạn gõ cùng địa chỉ đó, máy tính của họ nói chuyện với chính nó, không tìm thấy gì và hiện lỗi. Từ này mang một nghĩa khác trên mỗi thiết bị.
Các địa chỉ bắt đầu bằng 192.168., 10. hoặc từ 172.16. đến 172.31. cũng là chuyện tương tự ở quy mô lớn hơn. Đó là các địa chỉ riêng được dùng bên trong nhà và văn phòng. Những người dùng chung Wi-Fi với bạn mở được, nhưng không ai trên internet mở được.
Chạy website trên máy của mình là cách đúng để xây dựng nó. Vấn đề bắt đầu khi đó là nơi duy nhất nó tồn tại. Website của bạn cũng chỉ trực tuyến khi máy tính đang bật và ứng dụng đang chạy.
Vì sao IP của máy chủ không phải là địa chỉ thật
Khi website của bạn chạy trên một máy chủ thật, dù là shared hosting, VPS hay máy trên đám mây, bạn có thể mở nó bằng địa chỉ IP của máy chủ. Một số người dừng lại ở đó. Điều này gây ra nhiều vấn đề:
- Máy chủ có thể không biết phải hiển thị website nào. Một IP thường phục vụ nhiều website, và máy chủ quyết định hiển thị website nào dựa trên tên miền trong yêu cầu. Nếu bạn chỉ mở IP trần, bạn có thể nhận được trang mặc định, một lỗi, hoặc website của người khác.
- Không có HTTPS đúng nghĩa. HTTPS thường được thiết lập cho một tên miền, và một IP trần thường không thể lấy được chứng chỉ miễn phí tiêu chuẩn. Không có HTTPS, trình duyệt hiển thị “Không bảo mật”, và mọi thứ khách truy cập nhập, như mật khẩu và dữ liệu biểu mẫu, được gửi đi ở dạng đọc được.
- Hỏng khi bạn chuyển đổi. IP thuộc về máy chủ. Nếu bạn đổi nhà cung cấp hoặc gói dịch vụ, con số thay đổi và mọi đường dẫn bạn đã chia sẻ đều ngừng hoạt động. Với tên miền, bạn chỉ cần trỏ nó đến máy chủ mới.
- Con người và bộ lọc không tin tưởng nó. Nhiều bộ lọc thư rác và công cụ bảo mật coi các đường dẫn chỉ toàn số là đáng ngờ, và khách truy cập không thể nhớ hay nhận ra chúng.
- Không có email chuyên nghiệp. Một địa chỉ như
hello@mysite.comcần có tên miền. - Bản sao trùng lặp cho công cụ tìm kiếm. Nếu website của bạn phản hồi cả trên IP lẫn trên tên miền, công cụ tìm kiếm có thể thấy hai bản sao của mỗi trang.
Tên miền thật sự là gì
Máy tính tìm thấy nhau bằng số IP. Tên miền là một cái nhãn thân thiện cho con số đó, và một hệ thống gọi là DNS hoạt động như danh bạ điện thoại của internet: bạn đưa cho nó một cái tên, nó trả lại con số.
Có ba bên tham gia:
- Nhà đăng ký tên miền (registrar): công ty nơi bạn đăng ký tên miền. Bạn không mua tên miền mãi mãi. Bạn thuê nó, thường theo từng năm, và gia hạn.
- DNS: lưu giữ các bản ghi cho biết tên miền của bạn trỏ đến máy chủ nào.
- Dịch vụ hosting của bạn: nơi chứa các tệp của website.
Đưa website lên tên miền của bạn
Các bước có cùng một ý tưởng ở mọi nhà cung cấp hosting. Chỉ có các nút bấm và tên menu là khác nhau.
1. Xác định website của bạn đang ở đâu
Bạn trỏ tên miền đến đâu phụ thuộc vào loại hosting của bạn:
| Website của bạn ở đâu | Nhà cung cấp cho bạn gì | Bản ghi thường dùng |
|---|---|---|
| Shared hosting | Một địa chỉ IP máy chủ | Bản ghi A trỏ đến IP đó |
| VPS hoặc máy chủ đám mây | Một địa chỉ IP máy chủ | Bản ghi A trỏ đến IP đó |
| Nền tảng website (như Vercel, Netlify hoặc Render) | Một tên máy chủ để trỏ đến, và đôi khi là các IP | CNAME hoặc A, theo hướng dẫn của nền tảng |
Luôn làm theo hướng dẫn của nhà cung cấp hosting để có giá trị chính xác. Chúng nằm trong bảng điều khiển hoặc tài liệu của họ, và thường có trong email chào mừng.
2. Trỏ tên miền đến hosting của bạn
Bạn có thể làm theo một trong hai cách. Chọn một, đừng dùng cả hai.
- Cách A: đổi máy chủ tên miền (nameserver). Tại nhà đăng ký tên miền, thay các nameserver của tên miền bằng những nameserver mà nhà cung cấp hosting đưa cho bạn. Từ đó bạn quản lý mọi bản ghi trong bảng điều khiển của hosting.
- Cách B: giữ DNS ở nơi nó đang có (tại nhà đăng ký hoặc một dịch vụ như Cloudflare) và thêm các bản ghi ở đó: một bản ghi A đưa tên miền đến IP máy chủ của bạn, và một bản ghi CNAME để
wwwđi theo.
Cái bẫy thường gặp: các bản ghi chỉ có hiệu lực ở nơi DNS của tên miền bạn thực sự được lưu trữ. Nếu bạn đã đổi nameserver sang của nhà cung cấp hosting (Cách A), các bản ghi bạn thêm tại nhà đăng ký sẽ bị bỏ qua, và ngược lại.
3. Cho hosting của bạn biết về tên miền
Trỏ tên miền đến một máy chủ là chưa đủ. Máy chủ cũng phải biết website nào thuộc về tên đó. Mỗi nhà cung cấp hosting đều có một chỗ cho việc này: trang Tên miền trên shared hosting (trang của cPanel là một ví dụ), một dòng server_name trong cấu hình máy chủ web trên máy chủ riêng của bạn, hoặc một thẻ Tên miền trong phần cài đặt dự án của một nền tảng. Nếu bỏ qua bước này, tên miền của bạn đến được máy chủ nhưng hiển thị một trang mặc định.
4. Chờ DNS lan truyền
Việc này gọi là lan truyền (propagation). Có thể mất từ vài phút đến một hoặc hai ngày, dù thường khá nhanh. Cho đến khi hoàn tất, tên miền có thể không hoạt động hoặc hiển thị trang cũ với một số người.
5. Bật HTTPS
Hầu hết các nền tảng và nhiều nhà cung cấp hosting tự động cài chứng chỉ miễn phí ngay khi tên miền của bạn trỏ đến họ. Trên máy chủ riêng, bạn có thể dùng dịch vụ chứng chỉ miễn phí như Let's Encrypt với công cụ Certbot. Trong cả hai trường hợp, tên miền phải trỏ đến máy chủ trước. Khi xong, hãy cấu hình website để chuyển hướng mọi lượt truy cập từ http sang https.
6. Chọn một phiên bản duy nhất cho địa chỉ của bạn
mysite.com và www.mysite.com được tính là hai địa chỉ khác nhau. Hãy chọn một cái làm địa chỉ chính và chuyển hướng cái còn lại về đó. Các nền tảng thường có sẵn một thiết lập cho việc này. Trên máy chủ Apache, các quy tắc sau làm được việc đó (đặt chúng vào tệp .htaccess của website). Quy tắc đầu chuyển www về tên miền không có www, còn quy tắc thứ hai chuyển bất kỳ ai đến bằng IP trần của máy chủ về tên miền của bạn:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule ^(.*)$ https://mysite.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^203\.0\.113\.10$
RewriteRule ^(.*)$ https://mysite.com/$1 [L,R=301]
Hãy thay tên miền và IP ví dụ bằng của bạn. Trên Nginx hoặc máy chủ khác thì ý tưởng giống nhau, nhưng cú pháp khác, vì vậy hãy xem tài liệu của nó.
Sửa các địa chỉ ẩn trong mã của bạn
Mã do AI viết thường có localhost được ghi cứng vào. Trên một website đang hoạt động, điều này làm hỏng mọi thứ theo cách khó hiểu. Trình duyệt của khách truy cập hiểu localhost là máy tính của chính họ, nên trang của bạn cố tải dữ liệu từ một cỗ máy chẳng liên quan gì đến website của bạn.
Không tốt:
fetch("http://localhost:3000/api/products")
Tốt (chạy ở mọi nơi):
fetch("/api/products")
Hãy tìm trong toàn bộ dự án của bạn các từ localhost, 127.0.0.1, 192.168 và bất kỳ IP nào bạn từng dùng. Sau đó kiểm tra những chỗ này:
- Thiết lập URL của website: các giá trị như
APP_URLhoặcBASE_URLphải dùng tên miền thật của bạn, kèmhttps. - Dịch vụ đăng nhập và thanh toán: đăng nhập bằng Google, cổng thanh toán và các dịch vụ tương tự cần tên miền thật của bạn trong bảng điều khiển của họ làm địa chỉ chuyển hướng (callback) được phép. Webhook thanh toán hoàn toàn không thể đến được
localhost, vì máy chủ của cổng thanh toán cần một địa chỉ HTTPS công khai. - Các nguồn được phép (CORS): nếu mã của bạn liệt kê các địa chỉ được phép, hãy thay
localhostbằng tên miền của bạn. - Sơ đồ trang web (sitemap) và thẻ canonical: chúng phải hiển thị tên miền, không phải IP hay địa chỉ nội bộ.
Một ngoại lệ: địa chỉ cơ sở dữ liệu phụ thuộc vào cách bạn thiết lập. Ở nhiều nhà cung cấp hosting, cơ sở dữ liệu chạy trên cùng máy chủ với website, nên localhost là đúng ở đó. Với cơ sở dữ liệu trên đám mây hoặc được quản lý, nhà cung cấp cho bạn một địa chỉ riêng để dùng. Đừng bao giờ để cơ sở dữ liệu mở ra cho toàn bộ internet.
Các sự cố thường gặp
- “Không thể truy cập trang web này” ngay sau khi thiết lập: DNS có thể chưa lan truyền, hoặc một bản ghi bị sai. Hãy chờ, rồi kiểm tra các bản ghi.
- Tên miền hiển thị trang mặc định của hosting: tên miền đến được máy chủ của bạn, nhưng máy chủ không biết website thuộc về nó. Hãy thêm tên miền trong phần cài đặt của hosting.
- Hiển thị website cũ hoặc của người khác: một bản ghi cũ hoặc bộ nhớ đệm của trình duyệt. Hãy thử cửa sổ ẩn danh hoặc một mạng khác.
- “Không bảo mật” hoặc lỗi chứng chỉ: chứng chỉ chưa được cấp, hoặc tên miền chưa trỏ đến hosting của bạn.
- Chạy được với
wwwnhưng không chạy khi không có nó (hoặc ngược lại): thiếu một bản ghi. Hãy thêm CNAME chowww. - Dùng công cụ tạo đường hầm (tunnel) để trình diễn: các công cụ như ngrok hoặc Cloudflare Tunnel phù hợp cho một lần thử nhanh, nhưng không phải là hosting.
- Mở bộ định tuyến ở nhà ra internet (chuyển tiếp cổng): hãy tránh. Việc này phơi bày mạng gia đình của bạn, và IP nhà thường thay đổi.
Bảo vệ tên miền của bạn
Tên miền là địa chỉ quý giá nhất bạn sở hữu, vì vậy hãy bảo vệ nó:
- Bật tự động gia hạn. Tên miền hết hạn có thể bị người khác đăng ký.
- Dùng mật khẩu mạnh, duy nhất và xác thực hai yếu tố cho tài khoản nhà đăng ký của bạn.
- Bật khóa của nhà đăng ký, giúp ngăn việc chuyển tên miền đi khi chưa có sự chấp thuận của bạn.
- Giữ email liên hệ của bạn luôn cập nhật, vì các thông báo gia hạn và bảo mật được gửi đến đó.
Tự kiểm tra trong 2 phút
- Mở
http://IP-MAY-CHU-CUA-BAN. Nó không nên hiển thị website của bạn (hoặc nên chuyển bạn đến tên miền). - Mở
http://mysite.com. Bạn nên kết thúc ởhttps://mysite.comvới biểu tượng ổ khóa. - Mở phiên bản có
www. Bạn nên kết thúc ở cùng địa chỉ cuối cùng. - Tìm trong dự án của bạn
localhostvà bất kỳ số IP nào. - Trong terminal, chạy
nslookup mysite.com. Kết quả nên hiển thị IP của hosting (hoặc, trên một nền tảng, trỏ đến các máy chủ của nó).
Danh sách kiểm tra ngắn
- Chỉ dùng
localhostđể xây dựng, không bao giờ làm địa chỉ của bạn - Đăng ký một tên miền và bật tự động gia hạn cùng xác thực hai yếu tố
- Trỏ nó đến hosting bằng nameserver (Cách A) hoặc bằng bản ghi A và CNAME (Cách B), không dùng cả hai
- Thêm tên miền trong phần cài đặt hosting để máy chủ biết nó thuộc về website nào
- Chờ DNS lan truyền, rồi bật HTTPS
- Chọn một phiên bản (có hoặc không có
www) và chuyển hướng phiên bản còn lại - Thay mọi
localhostvà IP trong mã của bạn, và cập nhật các bảng điều khiển đăng nhập và thanh toán - Ngăn website phản hồi trên IP trần của máy chủ
Tên miền là thứ biến “chạy được trên máy của tôi” thành “ai cũng có thể truy cập”. Hãy thiết lập nó một lần, đúng cách, và mọi đường dẫn bạn chia sẻ sẽ tiếp tục hoạt động, kể cả khi sau này bạn đổi nhà cung cấp hosting.
