Windows 10 Insider build 18945 vừa mới được Microsoft tung ra với nhiều cải tiến bổ sung rất đáng chú ý, trong đó phải kể tới việc Windows Subsystem for Linux version 2 (WSL2) hiện đã được tích hợp thêm khả năng hỗ trợ kết nối liền mạch, trực tiếp các ứng dụng Windows 10 với các ứng dụng WSL2 thông qua localhost.
Localhost hiện đã được bổ sung trở lại vào WSL2
Khi WSL2 được phát hành với phiên bản đầu tiên, công cụ này hoàn toàn không còn hỗ trợ khả năng kết nối với máy chủ WSL2 Linux từ các ứng dụng Windows 10 bằng cách sử dụng địa chỉ localhost. Do vậy, trong trường hợp muốn kết nối với ứng dụng WSL2 từ các ứng dụng Windows của mình, bạn sẽ phải tìm địa chỉ IP được gán cho bản phân phối Linux đang chạy và kết nối với nó như một biện pháp thay thế.
Còn đối với phiên bản Windows 10 Insider build 18945, tính năng localhost hiện đã được bổ sung trở lại vào WSL2, và bạn có thể kết nối trực tiếp với Docker, NPM hoặc các dịch vụ khác đang chạy cục bộ trên hệ thống thông qua Localhost. Tác vụ này có thể được thực hiện bằng cách sử dụng lệnh nc như trong ví dụ minh họa dưới đây.
Kết nối thông qua Localhost
Với sự “tái xuất” của tính năng localhost, giờ đây người dùng hoàn toàn có thể tận hưởng những lợi ích từ sự gia tăng đối với hiệu suất của WSL2, trong khi vẫn có thể dễ dàng truy cập vào bất kỳ máy chủ Linux nào mà họ đang chạy.
Liên kết các máy chủ thành 0.0.0.0 để localhost hoạt động
Một số người dùng cho biết họ đã gặp sự cố trong việc kích hoạt tính năng localhost trong WSL2 bởi máy chủ của họ bị ràng buộc với 127.0.0.1.
Kỹ sư chịu trách nhiệm quản lý chương trình WSL Craig Loewen đã tuyên bố trong một bài đăng thông báo lỗi của WSL2 trên blog rằng để localhost hoạt động, máy chủ cần phải có thể truy cập được đến tất cả các địa chỉ IP, và do đó bị giới hạn với với 0.0.0.0. Nguyên văn thông báo của Craig Loewen như sau:
"Bạn có thể kiểm tra xem địa chỉ IP nào mà đối tượng php của bạn bị ràng buộc không? Tôi nghi ngờ rằng nó chỉ chấp nhận các kết nối từ localhost (127.0.0.1), trong khi cũng cần có khả năng chấp nhận các kết nối đến từ tất cả các địa chỉ IP (ví dụ: liên kết nó với 0.0.0.0). Như vậy, bạn sẽ cần phải chạy lệnh: php -S 0.0.0.0:8000
”.
Ví dụ, người dùng đã báo cáo rằng họ không thể để PHP hoạt động trên localhost bằng lệnh php -S localhost: 8000
. Điều này có thể là do tệp HOSTS ánh xạ localhost đến địa chỉ loopback 127.0.0.1 cụ thể và do đó, tính năng này sẽ không thể hoạt động.
Tệp máy chủ phân phối WSL2 (WSL2 Distribution Hosts File)
Khi người dùng ràng buộc PHP với 0.0.0.0, sử dụng lệnh php -S 0.0.0.0:8000
, tính năng kết nối localhost nhiều khả năng sẽ có thể hoạt động bình thường.