После поиска вокруг я обнаружил, что работает следующий относительно простой процесс. Я решил поделиться и сэкономить время и головную боль для тех, кто плохо знаком с WSL 2. Обратите внимание, что хотя я использую узел в качестве стека сервера, этот процесс должен быть более или менее таким же для других стеков приложений/веб-серверов.
Обратите внимание на следующее SE пост является основой решения. Также стоит изучить справку MSFT по WSL и WSL 2. . Также обратите внимание: я не предоставил подробного обоснования того, почему необходимы эти шаги, почему нам могут понадобиться настраиваемые имена хостов, параметры ipv6 в ../etc/hosts, значение 127.0.0.1, петлевые адреса, WSL 2 и управление дистрибутивом, и т. д. Это темы, выходящие за рамки этого поста.
Простой сценарий:
- nodeApp1: сервер приложений узла с произвольным именем хоста: «www.app1.com» на порту 3010 (или любом другом)
- nodeApp2: сервер приложений узла с пользовательским именем хоста: «www.app2.com» на порту 3020 (или любом другом)
К каждому серверу приложений node.js (снова работающему в wsl 2) можно получить доступ из браузера со следующими URL-адресами:
Два ключевых элемента:
- Правильные файлы etc/hosts, которые нужно изменить, находятся на стороне Windows (не в дистрибутиве WSL) по адресу: C:\Windows\System32\drivers\etc\hosts (да в Windows > папки). Это «горячее» обновление, поэтому перезагрузка WSL 2 не требуется. Содержание этого сценария:
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
- Добавьте C:\Users\you\.wslconfig со следующим содержимым (да, в папках Windows):
[wsl2]
localhostForwarding=true
- Примечание: ссылка на это есть в дистрибутиве WSL 2 Ubuntu /etc/hosts.
- Также обратите внимание, что для этого требуется выключение и перезагрузка WSL. Выключение терминала недостаточно. Также не требуется полная загрузка машины. Просто запустите:
wsl --shutdown (in Powershell) or
wsl.exe --shutdown (within Ubuntu)
Затем перезапустите приложение терминала Windows (или любой терминал WSL), чтобы получить доступ к обновленной среде WSL 2. Приложения с пользовательскими URL-адресами/именами хостов теперь будут работать в браузере постоянно, а динамический IP-адрес WSL 2 обойден.
person
MoMo
schedule
13.01.2021