Localhost là tên dùng để chỉ chính chiếc máy bạn đang ngồi, và máy đổi tên này ra địa chỉ 127.0.0.1 (IPv4) hoặc ::1 (IPv6). Dữ liệu gửi tới localhost chạy một vòng bên trong máy rồi quay về, không qua modem, không ra Internet. Khi bật XAMPP hay chạy một website đang làm dở, bạn mở http://localhost để xem, còn người ngoài mạng không thấy gì. Website không bao giờ thấy 127.0.0.1, họ thấy IP thật của bạn hiện trên trang chủ CheckIP.

Localhost là gì?

Localhost là một tên máy (hostname) đặc biệt mà máy tính, điện thoại hay máy chủ nào cũng có sẵn, luôn trỏ về chính thiết bị đó. Gõ localhost vào trình duyệt, máy tự hiểu là "gọi chính mình". Địa chỉ localhost là 127.0.0.1 nếu máy dùng IPv4, ::1 nếu dùng IPv6.

RFC 6761 (mục 6.3) quy định tên localhost là tên đặc biệt: thư viện phân giải tên nên luôn trả về địa chỉ loopback và không gửi câu hỏi tới máy chủ DNS. Trước khi hỏi DNS, máy còn đọc file hosts. Trên Windows file này nằm ở C:\Windows\System32\drivers\etc\hosts, trên macOS và Linux là /etc/hosts.

127.0.0.1 là gì? Vì sao gọi là địa chỉ loopback

127.0.0.1 là địa chỉ loopback của IPv4. Loopback nghĩa là vòng lặp: gói tin đi xuống phần mạng của hệ điều hành rồi quay ngược lên chính máy đó, không đi qua card mạng, dây cáp hay sóng wifi. Các chương trình trên cùng máy dùng nó để trao đổi với nhau.

Cả dải 127.0.0.0/8, từ 127.0.0.0 đến 127.255.255.255, đều dành cho loopback, 127.0.0.1 là địa chỉ quen dùng nhất. Theo RFC 1122 (mục 3.2.1.3), các địa chỉ này không được xuất hiện bên ngoài máy. Dải 127 thuộc vùng lớp A nhưng giữ riêng cho loopback, như bài các lớp địa chỉ IP đã giải thích. IPv6 chỉ có đúng một địa chỉ loopback là ::1 (RFC 4291).

So với hai loại còn lại trong bài IP public và IP private, 127.0.0.1 có phạm vi hẹp nhất.

Địa chỉ Loại Ai truy cập được
127.0.0.1 Loopback Chỉ chính máy đó
192.168.1.x IP private Các máy cùng wifi, cùng mạng LAN
IP public IP public Máy chủ trên Internet mà bạn kết nối tới

Localhost và 127.0.0.1 khác gì nhau?

Localhost là tên, 127.0.0.1 là địa chỉ. Máy phải đổi tên localhost ra địa chỉ trước khi kết nối, còn gõ 127.0.0.1 thì đi thẳng. Thường hai cách gõ cho cùng kết quả, trừ khi localhost bị đổi ra ::1 (IPv6) thay vì 127.0.0.1.

Ví dụ: chương trình chỉ nghe ở 127.0.0.1, trình duyệt lại thử ::1 trước, thế là http://localhost:3000 báo lỗi còn http://127.0.0.1:3000 vẫn mở. Tài liệu Node.js ghi từ bản 17, thứ tự mặc định là "verbatim" (giữ nguyên thứ tự hệ điều hành trả về), nên localhost có thể ra ::1 trước. Gặp lỗi kiểu này, cứ gõ thẳng 127.0.0.1.

  localhost 127.0.0.1 ::1
Bản chất Tên máy Địa chỉ IPv4 Địa chỉ IPv6
Phải đổi tên ra địa chỉ Có Không Không
Chương trình cần nghe ở 127.0.0.1 hoặc ::1 IPv4 IPv6

Localhost:8080 là gì?

Localhost:8080 là địa chỉ của một chương trình đang chạy trên chính máy bạn và nghe ở cổng (port) 8080. Số sau dấu hai chấm là số cổng. Mỗi chương trình nhận kết nối giữ một cổng riêng, nên một máy chạy được nhiều web cùng lúc: localhost:3000, localhost:5500, localhost:8080.

Gõ http://localhost không kèm số thì trình duyệt tự dùng cổng 80, gõ https thì dùng cổng 443. Theo FAQ của Apache Friends (đơn vị làm XAMPP), Apache trong XAMPP dùng cổng 80 cho HTTP và 443 cho HTTPS.

Cổng 8080 được IANA đăng ký với tên "http-alt" (HTTP Alternate), tức cổng web thay thế. Người ta chuyển web sang 8080 khi cổng 80 đã có chương trình khác giữ. Tomcat trong XAMPP cũng chạy ở 8080, theo cùng FAQ trên. Còn localhost:5500 là cổng của tiện ích Live Server trong VS Code, theo freeCodeCamp.

Localhost dùng để làm gì?

Localhost dùng để chạy thử phần mềm và website ngay trên máy mình trước khi đưa lên mạng. Nó còn dùng để thử tính năng cần HTTPS, chặn trang web bằng file hosts và kiểm tra phần mạng của hệ điều hành.

Chạy thử website trên máy với XAMPP, Laragon

Sinh viên học PHP hay WordPress thường cài XAMPP hoặc Laragon, bấm Start cho Apache và MySQL, rồi mở http://localhost. Đường dẫn localhost/phpmyadmin gồm hai phần: localhost là máy bạn, /phpmyadmin là trang quản lý cơ sở dữ liệu MySQL mà XAMPP cài sẵn. FAQ của Apache Friends ghi phpMyAdmin chỉ mở được từ chính máy chạy XAMPP, qua http://127.0.0.1 hoặc http://localhost.

Trình duyệt coi localhost là an toàn

Theo trang Secure contexts của MDN, localhost, dải 127.0.0.0/8 và ::1 được coi là nguồn đáng tin, nên http://localhost được tính là "secure context" dù không có chứng chỉ HTTPS. Nhờ vậy bạn thử được service worker và các tính năng vốn chỉ chạy trên HTTPS ngay trên máy.

Chặn trang web bằng file hosts

Thêm dòng "127.0.0.1 tenmien.com" hoặc "0.0.0.0 tenmien.com" vào file hosts, máy sẽ trỏ tên miền đó về chính nó và trang không mở được nữa. Phần mềm độc hại cũng có thể sửa file này để chuyển hướng trang quen sang trang giả.

Kiểm tra phần mạng trong máy bằng ping 127.0.0.1

Mở CMD, gõ ping 127.0.0.1. Có trả lời nghĩa là phần mạng TCP/IP của hệ điều hành đang chạy. Kết quả này không chứng minh máy có Internet, vì gói tin không hề ra khỏi máy.

127.0.0.1 và 0.0.0.0 khác gì?

Chương trình nghe ở 127.0.0.1 chỉ nhận kết nối từ chính máy đó. Chương trình nghe ở 0.0.0.0 nhận kết nối trên mọi card mạng, nên điện thoại, laptop khác cùng wifi gõ IP LAN của máy bạn là vào được. 0.0.0.0 không phải địa chỉ để mở trên trình duyệt.

Dùng 0.0.0.0 khi bạn muốn mở web đang làm trên điện thoại để xem giao diện mobile: tìm IP LAN của laptop theo hướng dẫn cách xem IP máy tính, rồi gõ IP đó kèm cổng trên điện thoại. Ở wifi phòng trọ hay quán cà phê, ai cùng mạng cũng vào được, nên làm xong thì chuyển lại 127.0.0.1.

Không vào được localhost: lỗi thường gặp và cách sửa

Lỗi phổ biến nhất là Chrome báo "Không thể truy cập trang web này" kèm dòng "localhost đã từ chối kết nối" (mã ERR_CONNECTION_REFUSED). Nghĩa là trên máy chưa có chương trình nào nghe ở cổng bạn gõ. Cách sửa gần như luôn là bật server lên, hoặc gõ đúng địa chỉ và cổng mà server in ra.

Lỗi Nguyên nhân thường gặp Cách sửa
Localhost từ chối kết nối Apache trong XAMPP chưa Start, hoặc gõ sai cổng Bấm Start cho Apache, xem cột Port(s) trong XAMPP Control Panel
Apache không Start được Cổng 80 hoặc 443 đang bị chương trình khác giữ Tắt chương trình kia, hoặc đổi Apache sang cổng 8080 rồi mở localhost:8080
Vào localhost được, 127.0.0.1 không được (hoặc ngược lại) Lệch IPv4 và IPv6 Gõ thẳng 127.0.0.1, hoặc cho server nghe cả ::1
Điện thoại không mở được localhost của laptop Trên điện thoại, localhost là chính điện thoại Cho server nghe 0.0.0.0, gõ IP LAN của laptop kèm cổng
Trang quen bị chuyển về 127.0.0.1 File hosts bị thêm dòng lạ Xóa dòng đó trong hosts, quét virus

FAQ của Apache Friends ghi chỉ một server được dùng cổng 80; nếu máy đang bật IIS thì dừng dịch vụ World Wide Web Publishing Service. Công cụ xampp-portcheck.exe đi kèm cho biết cổng nào đang bị dùng. Muốn đổi cổng, bấm nút Config của Apache trong XAMPP Control Panel, mở httpd.conf và sửa dòng Listen 80 thành Listen 8080.

Câu hỏi thường gặp

127.0.0.1 có phải IP của tôi không?

Không. 127.0.0.1 là địa chỉ nội bộ chung của mọi máy trên thế giới, chỉ trỏ về chính máy đang dùng. Máy bạn còn có IP private kiểu 192.168.1.x trong mạng nhà, và IP public do Viettel, VNPT hay FPT cấp. Website chỉ thấy IP public đó.

Người khác có truy cập localhost của tôi được không?

Không. Modem và router không chuyển gói tin loopback đi đâu cả, nên người ngoài không gửi được gì tới 127.0.0.1 của bạn. Ngoại lệ là khi bạn chạy server ở 0.0.0.0: lúc đó ai cùng mạng wifi cũng mở được trang qua IP LAN của máy.

127.0.0.1 có phải trang đăng nhập modem không?

Không. Gõ 127.0.0.1 chỉ mở được chương trình trên chính máy tính, không mở được modem. Trang quản lý modem nằm ở địa chỉ default gateway, thường là 192.168.1.1 hoặc 192.168.0.1. Xem cách tìm địa chỉ này trong bài đăng nhập modem.

Gõ 127.0.01 có được không?

Được. Chuẩn WHATWG URL mà trình duyệt hiện nay làm theo chấp nhận địa chỉ IPv4 viết thiếu phần và tự điền số 0, nên 127.0.01 và 127.1 đều thành 127.0.0.1. Trong file cấu hình thì vẫn nên gõ đủ 127.0.0.1.

Không có mạng có vào localhost được không?

Được. Localhost không cần Internet, không cần cả wifi hay dây mạng, vì dữ liệu không rời khỏi máy. Tắt wifi, bật XAMPP, bạn vẫn mở http://localhost bình thường. Học làm web ở nơi mạng chập chờn vì thế không bị ảnh hưởng.