Решение проблемы ERR_EMPTY_RESPONSE при настройке Nginx в WSL2

При настройке локальной среды разработки с использованием WSL2 и Nginx часто возникает проблема: браузер показывает ошибку ERR_EMPTY_RESPONSE при попытке доступа к локальным сайтам. В этой статье мы разберем причины возникновения проблемы и предоставим пошаговое решение.

Причина проблемы

Проблема возникает из-за особенностей архитектуры WSL2:

  • WSL2 работает как полноценная виртуальная машина
  • Имеет собственный IP-адрес в виртуальной сети
  • Windows и WSL2 находятся в разных сетевых пространствах
  • Прямой доступ к localhost WSL2 из Windows невозможен

ERR_EMPTY_RESPONSE возникала потому что:

  • Браузер в Windows пытался получить доступ к localhost (127.0.0.1)
  • Но Nginx в WSL2 работал на другом IP-адресе (в виртуальной сети WSL2)
  • Соединение не могло быть установлено напрямую

    Решение

    Настройка Port Proxy в Windows

    # Получение IP-адреса WSL2
    $wslip = (wsl hostname -I).Trim()
    Write-Host "WSL IP: $wslip"
    
    # Настройка port proxy
    netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0
    netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=$wslip
    
    # Проверка настроек
    netsh interface portproxy show all

    $wslip — это «айпи» Вашей WSL

    Что произошло?

    Эта команда создаст «мост» между:

    • Windows (0.0.0.0:80) — куда приходят запросы от браузера
    • WSL2 (внутренний IP:80) — где работает Nginx

    Процесс работы теперь выглядит так:

    Браузер (Windows) -> localhost:80 -> Port Proxy -> WSL2 IP:80 -> Nginx

    Не забудьте сделать:

    Очистка DNS-кэша в Windows ipconfig /flushdns и перезапуск Nginx sudo service nginx restart

    Комментарии

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *