从Windows获取err_connection_refused访问在wsl2上运行的django但可以从Windows终端卷曲

问题描述

当尝试从Windows访问在wsl2(http:// localhost:8000)上运行的django时,我得到了err_connection_refused,但是当我从Windows终端bash使用curl http://localhost:8000时,它工作正常。我试图为端口8000添加新的防火墙入站规则,但仍无法正常工作。还有什么我需要照顾的吗?

django server started

browser is not working

curl directly not working

bash curl is working

非常感谢

解决方法

似乎是转发问题。 WSL2的接口是经过NAT处理的,而WSL1的默认连接是桥接的。

一些想法:

  • 如果执行wsl --shutdown然后重新启动WSL2会话,问题是否解决?如果是这样,请尝试disabling Windows' Fast Startup。由于系统上存在其他问题(非WSL问题),我已经禁用了快速启动,因此这可能与为什么我 无法复制的原因有关。

  • 沿着同一行,您是否休眠而不是关闭电源?在这种情况下,wsl --shutdown也可能会解决。

  • 有关其他建议,请参见this github issue。关于服务可能有一些建议。 (另一个问题-您正在运行Windows Home还是Professional?)

  • 您的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

(尽管我在运行鱼壳时使用了activate.fish

从Windows中的Vivaldi Web浏览器访问localhost:8000,返回“安装成功!恭喜!!”

curl也可以正常工作。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...