nginx 服务器在 WSL 上运行和 Beeware 应用程序从 windows anaconda 构建和运行之间的网络配置

问题描述

我的 web 服务器在 wsl 上,beeware 在 anaconda 上(windows 版本不是 linux),我如何配置 beeware 应用程序与 wsl 服务器通信。 有没有可行的办法? 目前我使用 ngrok 主机作为网关。 有没有不需要数据包在我的系统外传播的替代方法 有没有开发本地系统的指南?

解决方法

我将尝试笼统地回答这个问题,因为我目前不使用 Beeware/Anaconda。我尝试浏览 Beeware 文档,但其中太多(包括“发布”,这可能是 nginx 集成中的一个关键元素)是“即将推出”。

假设混合中没有虚拟机或容器,Windows 应该检测 WSL2 实例上的端口并将它们正确映射到本地主机。例如,如果在 WSL 中您 python3 -m http.server 3000,那么您应该能够在 Windows 网络浏览器中打开该页面 http://localhost:3000。因此,默认情况下,Windows 上的 Anaconda 应该能够通过本地主机访问 WSL 中的 Web 服务器。如果这没有发生:

  • 首先,确保 nginx 正在侦听 0.0.0.0
  • 有时 Windows 本地主机自动映射似乎会中断。有关一些其他想法,请参阅此答案。快速修复通常只是执行 wsl --shutdown 来重置接口。一个长期的修复方法可能是禁用 Windows 快速启动。

另一方面,如果需要从 nginx 建立到 Beeware/Anaconda 的任何连接,WSL2 不会将 localhost 映射回 Windows 主机。您需要通过 Windows 主机 IP 访问它。

最简单的方法是使用 mDNS,这意味着在 WSL2 中,您可以通过 mDNS 名称“mycomputername.local”访问 Windows 主机,其中 mycomputername 是 Windows“计算机名称”。

如果 mDNS 不起作用,请参阅 this answer 了解更多详细信息和替代方法。