Ngu*_*ham 6 django localhost windows-subsystem-for-linux wsl-2
我err_connection_refused在尝试从 Windows 访问 wsl2 (http://localhost:8000) 上运行的 django 时遇到了问题,但是当我curl http://localhost:8000从 Windows 终端 bash使用时,它工作正常。我试图为端口 8000 添加新的防火墙入站规则,但它仍然无法正常工作。还有什么我需要照顾的吗。
非常感谢
Not*_*1ds 11
好像是转发问题。WSL2 的接口是 NAT 的,而 WSL1 是默认桥接的。WSL 似乎对端口进行了一些“自动转发”,但仅限于本地主机。然而,有时这种自动转发机制似乎“崩溃”了。罪魁祸首似乎是休眠或 Windows 快速启动(它们都是密切相关的功能)。
如果您执行 awsl --shutdown然后重新启动 WSL2 会话,问题是否解决?如果是这样,请尝试禁用 Windows 的快速启动。由于系统上的不同(非 WSL 问题),我已经禁用了快速启动,因此这可能与我无法重现的原因有关。
同样,您是否休眠而不是关闭电源?在这种情况下, awsl --shutdown也可能解决。
对于未来的读者,请注意,对于大多数在评论中点赞和回复的人来说,以上两点似乎解决了问题。但是,如果这对您不起作用,以下是我最初的“其他建议”:
有关其他一些想法,请参阅此 github 问题。有一些关于可能需要的服务的建议。(附带问题 - 您运行的是 Windows 家庭版还是专业版?)
您的 Windows 主机文件(例如c:\windows\system32\drivers\etc\hosts)是否有可能将localhost 指向 127.0.0.1 以外的 IP?如果我尝试通过我的本地 Windows IP 地址而不是 127.0.0.1 或 localhost 进行访问,我也会得到一个 ERR_CONNECTION_REFUSED。
由于您正在查看防火墙规则,也许查看转发规则而不仅仅是入站允许?
如果所有其他方法都失败,请尝试导出/备份 WSL2 会话(请参阅 参考资料wsl --export),然后将其作为新的 WSL1 会话导入。看看它在那里工作。
在我的 WSL2/Ubuntu 20.04 系统上,我尝试通过以下步骤进行重现(但还无法重现):
mkdir -p ~/src/dj-test
cd ~/src/dj-test
python3 -m venv dj
source dj/bin/activate
pip install Django
django-admin startproject config .
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
(虽然我activate.fish在运行鱼壳时使用)
从 Windows 中的 Vivaldi Web 浏览器访问localhost:8000,返回“安装成功!恭喜!...”
curl 在 Powershell Core 下也能正常工作。
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |