我正在 Windows计算机中运行本地 AEM服务器。服务器正在 localhost:4502 上运行。我正在使用在WSL2中运行的Ubuntu发行版进行开发。我想访问在 WSL2 Ubuntu 的Windows计算机中运行的localhost:4502。
有什么方法可以做到吗?
答案 0 :(得分:0)
我也在寻找一些解决方案来做到这一点,但目前没有这样的选项可用。查看此 GitHub 问题:
https://github.com/microsoft/WSL/issues/4619
一种解决方案是:
如果您拥有 windows(host) 的 IP,那么它将完成这项工作,但唯一的问题是 IP 每次都会更改。但是,WSL2 将您的 Windows(主机)IP 存储在 /etc/resolv.conf
文件中。因此,我们可以修改我们的 etc/hosts
以将 winhost
动态映射到 IP。
在 ~/.bashrc
文件的末尾添加以下几行。这将在您启动 WSL 时 grep IP 并修改 etc/hosts
。
export winhost=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
if [ ! -n "$(grep -P "[[:space:]]winhost" /etc/hosts)" ]; then
printf "%s\t%s\n" "$winhost" "winhost" | sudo tee -a "/etc/hosts"
fi
然后运行以下命令以重新加载更改。
$ source ~/.bashrc
现在您可以在 WSL2(client) 中使用 winhost
而不是 localhost
来访问运行 windows(host) 的服务器。在您的情况下,它将是 winhost:4502
但这适用于任何其他用例以及访问在 Windows 等上运行的 Postgres/MySQL 服务器。
注意:请始终记住在 Windows 上配置防火墙以允许这些端口,以便 WSL2 可以访问,否则您的连接可能会被防火墙阻止。
答案 1 :(得分:-1)
这确实属于另一个论坛,但是我怀疑您可以这样做。
步骤1.在实际IP地址(或所有地址)上运行AEM服务器,而不是仅绑定到本地主机。
第2步。您的Ubuntu WSL客户端实例不会与主机共享本地主机,但会共享您的计算机实际具有的本地IP地址(例如10.0.0.2)。只需让您的客户端连接到该IP地址而不是本地主机即可。
我对AEM一无所知,但是如果将其暴露在更大的网络中,则可能需要保护它。阻止上游防火墙上的端口4502或使用Windows防火墙规则仅允许从您自己的IP地址在端口4502上传入。这肯定是可能的。
答案 2 :(得分:-1)
Windows 10 将 localhost 视为 ::1 Ubuntu 认为 localhost 为 127.0.0.1
所以解决方案是创建一个映射
在 C:\Users
添加以下内容。
[wsl2]
localhostForwarding=true
PS:我不知道它是否搞砸了其他任何事情,但它帮助我运行了升级到 wsl2 后损坏的 django 服务器
答案 3 :(得分:-2)
这很简单,你只需要做两件事。在主机文件中将 ip 地址设置为 localhost 并允许 Windows 防火墙允许传入连接。 以下是分步说明:
ipconfig /all
,记下IP地址172.22.16.1
172.22.16.1 localhost
,保存并关闭。control panel
> System and Security
> Windows Defender Firewall
> Advanced Settings
> Inbound Rules
> 'New规则`Port
,点击下一步4502
,点击下一步Public
,点击下一步AEM server
,点击完成wsl --shutdown
关闭 ubuntu 子系统。curl localhost:4502
。如果它返回一些东西,则意味着您可以开始使用了。