如何在局域网中访问运行在 WSL 中的 Web 服务器?
2024-03-15 04:07:42
从局域网访问运行在 WSL 中的 Web 服务器
简介
WSL(Windows Subsystem for Linux)是一个允许你在 Windows 10 和 11 中运行 Linux 发行版的强大工具。但是,当你在 WSL 中运行 Web 服务器时,你可能会遇到从外部网络访问它的问题。本文将指导你完成解决此问题的步骤,让你可以轻松地从局域网上的任何设备访问 WSL 中的 Web 服务器。
问题:无法从外部访问 WSL 中的 Web 服务器
在 WSL 中启动 Web 服务器后,你可能只能够通过 localhost
或 127.0.0.1
从本地计算机访问它。尝试使用外部 IP 地址或其他设备上的地址访问服务器时,你会遇到连接问题。
解决方案:
解决此问题的关键在于启用防火墙转发和端口转发,以便将外部网络上的流量路由到 WSL 中的 Web 服务器。
步骤 1:启用 WSL 防火墙转发
在 WSL 终端中,使用以下命令启用防火墙转发:
sudo ufw allow 80/tcp
这将允许 WSL 防火墙接受来自外部网络的 80 端口(HTTP)连接。
步骤 2:启用 Windows 防火墙规则
在 Windows 中,转到控制面板 > 系统和安全 > Windows 防火墙。单击“高级设置”,然后在“入站规则”部分中单击“新建规则”。选择“端口”,然后选择“TCP”并输入端口号 80。允许连接,然后单击“确定”以创建规则。
步骤 3:设置端口转发
使用 Windows Hyper-V 管理器设置端口转发,将端口 80 从 Windows 主机转发到 WSL。右键单击 WSL 虚拟机并选择“设置”。在“网络适配器”选项卡中,单击“高级功能”。在“虚拟机端口转发”下,创建一个新转发,将 80 端口转发到 WSL 的 IP 地址和 80 端口。
步骤 4:测试连接
完成上述步骤后,你应该能够从局域网上的其他设备访问 WSL 中的 Web 服务器。尝试使用以下 URL 进行测试:
http://<WSL-发行版-IP-地址>:80
常见问题解答
- 为什么我无法从局域网访问 WSL 中的 Web 服务器?
没有启用防火墙转发或端口转发,或者 WSL 和 Windows 防火墙配置不正确。
- 如何查看我的 WSL 发行版的 IP 地址?
在 WSL 终端中,使用 ifconfig
命令。
- 我可以将其他端口转发到 WSL 吗?
是的,你可以在 WSL 中使用任何端口,但需要在 WSL 和 Windows 防火墙中分别启用端口转发和防火墙规则。
- 是否可以通过 Wi-Fi 从外部网络访问我的 WSL Web 服务器?
是的,只要你的计算机连接到 Wi-Fi 网络,并且防火墙和端口转发已正确配置。
- 如何提高 WSL Web 服务器的性能?
分配更多资源给 WSL 虚拟机,例如内存和 CPU 内核,可以提高服务器性能。
结论
通过启用防火墙转发、配置 Windows 防火墙规则和设置端口转发,你可以轻松地从局域网上的任何设备访问运行在 WSL 中的 Web 服务器。这将极大地提高 WSL 的可用性和灵活性,使其成为开发和部署 Web 应用程序的强大工具。