(我提供了一个简单的工作解决方案作为回应)
我最近从 macOS 迁移到 WSL 2。我有两个节点服务器在 WSL 2(Ubuntu 发行版)中运行。每个都必须可以通过自定义主机名进行访问,以用于开发与生产目的。我很难通过自定义主机名(即在某些 ../etc/hosts 文件中设置)访问节点服务器,特别是考虑到 WSL 2 的动态 IP 根据 WSL/pc“启动”而变化。如何在 WSL 2 中设置自定义主机名?
场景:
必须使用以下 url/自定义主机名从浏览器访问每个 node.js 应用服务器(再次在 WSL 2 中运行):
经过搜索,我发现以下相对简单的过程有效。我想我应该分享并为那些刚接触 WSL 2 的人节省一些时间和头痛。注意,虽然我使用节点作为服务器堆栈,但此过程对于其他应用程序/Web 服务器堆栈应该或多或少是相同的。
注意以下SE 帖子是解决方案的基础。还值得查看 MSFT 关于 WSL 与 WSL 2 的参考。另请注意,我没有提供关于为什么需要这些步骤、为什么我们可能需要自定义主机名、../etc/hosts 中的 ipv6 选项、127.0.0.1 的含义、环回地址、WSL 2 和发行版管理的深层原理,等等。这些主题超出了本文的范围。
简单场景:
每个 Node.js 应用服务器(再次在 wsl 2 中运行)都可以通过浏览器使用以下 url 进行访问:
两个关键项目:
127.0.0.1 localhost
127.0.0.1 www.app1.com
127.0.0.1 www.app2.com
255.255.255.255 broadcasthost
::1 localhost www.app1.com www.app2.com
[wsl2] localhostForwarding=true
- 注意:WSL 2 Ubuntu 发行版的 /etc/hosts 中有对此的引用。
- 另请注意,这需要关闭 WSL 并重新启动。关闭终端是不够的。另外机器启动也不是 必需的。只需运行:
wsl --shutdown (in Powershell) or
wsl.exe --shutdown (within Ubuntu)
然后重新启动 Windows 终端应用程序(或任何 WSL 终端)以访问更新后的 WSL 2 环境。具有自定义 url/主机名的应用程序现在将在浏览器中永久运行,并且绕过 WSL 2 的动态 IP。