我正在运行本地AEM服务器 in my Windows机。服务器正在运行本地主机:4502。我正在使用运行的 Ubuntu 发行版WSL 2为了我的发展。我想访问本地主机:4502在我的 Windows 机器上运行WSL 2 Ubuntu.
有没有办法做到这一点或者不可能?
最新 Windows 版本的简短回答
mDNS 成为 WSL2 的一项功能已经有一段时间了。连接您的 WSL2hostname
(或您的编程/语言环境中的等效命令/函数)".local"
应该可以让你访问。
例如,从 Bash 尝试:
ping "$(hostname).local"
例如,如果您的hostname
是“MyComputer”,那么 mDNS 应该是MyComputer.local
.
如果 ICMP 被阻止(似乎在新安装的 Windows 11 上),或者如果您想测试与实际端口的连接,请使用 netcat。默认情况下,它在 WSL Ubuntu 安装中可用,但可能需要安装在 openSUSE 等其他发行版中:
nc -zv "$(hostname).local" <portnumber>
为什么本地主机不起作用
WSL2 与 Windows 虚拟机平台(Hyper-V 的子集)创建的虚拟网络 (vNIC) 一起运行。Inside WSL2, localhost
是 vNIC 的地址。
你需要什么
WSL2 还在 Windows 主机上设置了一个虚拟路由器,以允许连接到外部世界以及 Windows 主机。您可以通过以下方式查看:
ip route
这是您需要用于 Windows 主机的地址。
当然,您可以从路线中解析它(或者,如之前的答案所示,从/etc/resolv.conf
),但是 WSL 设置了一个方便的 mDNS(.local
域)使用 Windows“计算机名称”,该名称也用作 WSL 实例的主机名。
如此串联$(hostname)
(或者在您的编程/语言环境中等效)".local"
应该可以让你访问。
其他考虑因素:
-
mDNS 依赖于 Windows 主机来解析名称。如果您改变了您的/etc/resolv.conf
在 WSL 下,那么这可能行不通。
-
请记住打开任何必要的防火墙端口。 WSL2 被认为是独立网络来自 Windows 主机的信息。 Windows 会将 WSL2 的网络连接视为来自外部源。(归功于@拉米尔吉尔法诺夫指出这一点的评论)
第一次从 WSL2 到特定端口建立连接时,Windows Defender(如果这是您的防火墙)通常会显示一个对话框,询问您是否要授予访问权限。然而,根据我的经验,这个对话经常被掩盖under主窗口由于鼠标点击、键盘等的计时,所以很容易错过。
-
请记住让您的 Windows 服务接受来自远程主机的连接。
许多服务器默认配置为绑定到localhost
/127.0.0.1
。因为 WSL2 对 Windows 来说是remote网络,您通常需要更新配置才能绑定到0.0.0.0
或具体地址。
请注意,由于 WSL2 的地址在每次重新启动后都会发生变化,因此每次更新配置可能会很困难。如果可能的话,使用0.0.0.0
除非存在安全问题。由于 WSL 的设计目的是发展而不是生产,这不应该是一个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)