如何解决从Windows获取err_connection_refused访问在wsl2上运行的django但可以从Windows终端卷曲
当尝试从Windows访问在wsl2(http:// localhost:8000)上运行的django时,我得到了err_connection_refused
,但是当我从Windows终端bash使用curl http://localhost:8000
时,它工作正常。我试图为端口8000添加新的防火墙入站规则,但仍无法正常工作。还有什么我需要照顾的吗?
非常感谢
解决方法
似乎是转发问题。 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
也可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。