Windows 10 如何为运行在WSL2中的服务器(例如node.js)设置自定义主机名和端口

Windows 10 如何为运行在WSL2中的服务器(例如node.js)设置自定义主机名和端口,windows-10,hostname,wsl-2,hosts-file,Windows 10,Hostname,Wsl 2,Hosts File,(我提供了一个简单的工作解决方案作为回应) 我最近从macOS搬到了WSL2。我有两个运行在WSL2(Ubuntu发行版)中的节点服务器。为了开发和生产目的,必须通过自定义主机名访问每个主机名。我很难通过自定义主机名(即在某些../etc/hosts文件中设置)访问节点服务器,特别是考虑到WSL 2的动态IP会随WSL/pc“启动”而变化。如何在WSL2中设置自定义主机名 情景: 必须使用以下URL/自定义主机名从浏览器访问每个node.js应用程序服务器(同样在WSL 2中运行): 在四

(我提供了一个简单的工作解决方案作为回应)

我最近从macOS搬到了WSL2。我有两个运行在WSL2(Ubuntu发行版)中的节点服务器。为了开发和生产目的,必须通过自定义主机名访问每个主机名。我很难通过自定义主机名(即在某些../etc/hosts文件中设置)访问节点服务器,特别是考虑到WSL 2的动态IP会随WSL/pc“启动”而变化。如何在WSL2中设置自定义主机名

情景:

必须使用以下URL/自定义主机名从浏览器访问每个node.js应用程序服务器(同样在WSL 2中运行):


在四处搜索之后,我发现了以下相对简单的工作流程。我想我应该和那些新加入WSL2的人分享并节省一些时间和头疼的事。注意,尽管我使用node作为服务器堆栈,但对于其他app/web服务器堆栈,这个过程或多或少应该是相同的

注:SE post是解决方案的基础。同样值得一看MSFT的参考资料。还要注意的是,我还没有提供关于为什么需要这些步骤、为什么我们可能需要自定义主机名、../etc/hosts中的ipv6选项、127.0.0.1的含义、环回地址、WSL 2和发行版管理等的详细理由。这些主题超出了本文的范围

简单场景:

  • nodeApp1:端口3010上具有自定义主机名“www.app1.com”的节点应用程序服务器(或其他)
  • nodeApp2:端口3020上具有自定义主机名:“www.app2.com”的节点应用程序服务器(或其他)
每个node.js应用程序服务器(同样在wsl 2中运行)都可以通过以下URL从浏览器访问:

两个关键项目:

  • 要修改的正确etc/hosts文件位于Windows端(非WSL发行版),位于:C:\Windows\System32\drivers\etc\hosts(在Windows文件夹中为“是”)。这是一个“热”更新,因此无需重新启动WSL2。此场景的内容是:
  • 请添加C:\Users\“you”\.wslconfig,其中包含以下内容(在Windows文件夹中为是):
  • 注意:WSL2ubuntu发行版的/etc/hosts中提到了这一点
  • 还要注意,这需要关闭WSL并重新启动。关闭终端是不够的。此外,不支持机器的总引导 必修的。简单运行:
然后重新启动Windows终端应用程序(或任何WSL终端)以访问更新的WSL 2环境。具有自定义URL/主机名的应用程序现在将在浏览器中永久工作,并且WSL2的动态IP被绕过

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 --shutdown (in Powershell) or 
wsl.exe --shutdown (within Ubuntu)