我在 WSL2/Hyper-V/Windows 10 上运行 Ubuntu 20.04。
当我curl http://127.0.0.1
在 Ubuntu 中做这件事时,我得到了这个:
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.19.3</center>
</body>
</html>
当我在主机上执行此操作时 - 在 Windows 10 本身(使用 Git Bash)上,我得到了这个:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0
curl: (7) Failed to connect to 127.0.0.1 port 80: Connection refused
如何在 Ubuntu 之外访问端口 80?我需要更新 Windows 中的防火墙规则吗?
问题:
Windows 10 认为 localhost 是
::1
.Ubuntu 认为 localhost 是
127.0.0.1
当前解决方案:2022 年 5 月 31 日
我最近没有遇到这个问题。我想我在过去 4 个月里做过一次“网络重置”。
“网络重置”解决方案:2021 年 7 月 27 日
WSL 的变化相对较快。
我目前的 WSL2 解决方案是
解决方案1:
C:\Users\Me\.wslconfig
:这对我有用。
解决方案2:
这对我来说效果不佳,但对你来说可能。按照注释中的说明停止自动生成
/etc/hosts
,并将 localhost 更改为,::1
以便它们引用相同的适配器。为了兼容性,0.0.0.0
绑定到所有接口(127.0.0.1 和 ::1)以便它工作。这会搞砸吗?大概。如果是这样,您必须记住摆弄它才能使其正常工作。
那是因为每个主机都有一个 localhost 127.0.0.1。Windows 主机认为它会自行处理。最简单的解决方案是让您使用真实 IP 进行 IP。例如 192.168.xx
我发现了以下简介
在 WSL 2 的早期阶段,我们不能使用 localhost。我们需要使用 IP,因为 Linux 在 VM 中。
当前要访问您的应用程序,我们将使用 IP。
这对我有用,就像 localhost/127.0.0.1 我没有运气:
我的解决方案是将本地域的 127.0.0.1 和 ::1 添加到 Windows 主机文件中。
重启apache2服务: