Technology

Localhost, địa chỉ IP hay tên miền? Cách cho website của bạn một địa chỉ thật

Website của bạn chạy được trên localhost nhưng không ai khác mở được. Tìm hiểu sự khác nhau giữa localhost, địa chỉ IP và tên miền, cùng cách đưa website lên một địa chỉ thật trên dịch vụ hosting của bạn.

· 8 phút đọc

Localhost, địa chỉ IP hay tên miền? Cách cho website của bạn một địa chỉ thật

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.

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ở
localhosthttp://localhost:3000Chỉ máy tính đang chạy nó
IP mạng nội bộhttp://192.168.1.20Các thiết bị dùng chung Wi-Fi hoặc bộ định tuyến
IP máy chủhttp://203.0.113.10Bất kỳ ai trực tuyến, nhưng xem bên dưới
Tên miềnhttps://mysite.comBất kỳ ai, ở bất kỳ đâu
Bốn cách để đến được một website: localhost, IP mạng nội bộ, IP máy chủ và tên miền, kèm theo ai có thể mở từng loại
Cùng một website có thể có bốn địa chỉ khác nhau. Chỉ có tên miền là dành cho khách truy cập.

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.com cầ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.
Sơ đồ cho thấy trình duyệt hỏi DNS về IP của mysite.com, DNS trả lời bằng con số, rồi trình duyệt yêu cầu trang từ máy chủ hosting
Điều xảy ra ngay sau khi ai đó gõ tên miền của bạn.

Đư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 ở đâuNhà cung cấp cho bạn gìBản ghi thường dùng
Shared hostingMột địa chỉ IP máy chủBản ghi A trỏ đến IP đó
VPS hoặc máy chủ đám mâyMộ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 IPCNAME 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.
Minh họa các bản ghi DNS: một bản ghi A trỏ tên miền đến IP máy chủ và một bản ghi CNAME cho www
Minh họa hai bản ghi mà hầu hết website cần. Màn hình DNS của bạn có thể trông khác.

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_URL hoặc BASE_URL phải dùng tên miền thật của bạn, kèm https.
  • 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 localhost bằ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 www như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 cho www.
  • 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.com vớ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 localhost và 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

  1. Chỉ dùng localhost để xây dựng, không bao giờ làm địa chỉ của bạn
  2. Đă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ố
  3. 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
  4. 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
  5. Chờ DNS lan truyền, rồi bật HTTPS
  6. 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
  7. Thay mọi localhost và 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
  8. 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.

Comments

No comments yet. Ask a question or add what we missed.