Obtuve el err_connection_refused al intentar acceder a django ejecutándose en wsl2 (http://localhost:8000) desde Windows, pero cuando uso curl http://localhost:8000 desde Windows terminal bash, funciona bien. Intenté agregar una nueva regla de entrada de firewall para el puerto 8000, pero aún no funciona. ¿Hay algo más de lo que deba ocuparme?
Muchas gracias
Parece un problema de reenvío. La interfaz de WSL2 es NAT, mientras que WSL1 se puenteó de forma predeterminada. WSL parece hacer algo de "reenvío automático" de puertos, pero solo en localhost. Sin embargo, a veces este mecanismo de reenvío automático parece "descomponerse". El principal culpable parece ser la hibernación o el inicio rápido de Windows (que son características estrechamente relacionadas).
¿Se resuelve el problema si hace wsl --shutdown y luego reinicia la sesión de WSL2? Si es así, intente deshabilitar el inicio rápido de Windows . Ya tenía deshabilitado el inicio rápido debido a un problema diferente (que no es WSL) en mi sistema, por lo que podría estar relacionado con el motivo por el cual no puedo reproducir.
En la misma línea, ¿hibernas en lugar de apagar? En ese caso, un wsl --shutdown podría resolverse.
Para futuros lectores, tenga en cuenta que los dos puntos anteriores parecen resolver el problema para la mayoría de las personas que votaron y respondieron en los comentarios. Sin embargo, si eso no funciona para usted, las siguientes fueron mis "sugerencias adicionales" originales:
Para obtener algunas ideas adicionales, consulte este problema de github . Hay algunas sugerencias sobre los servicios que podrían ser necesarios. (Pregunta adicional: ¿está ejecutando Windows Home o Professional?)
¿Existe alguna posibilidad de que su archivo de hosts de Windows (p. ej., c:\windows\system32\drivers\etc\hosts ) apunte localhost a una IP distinta de 127.0.0.1? Si intento acceder a través de mi dirección IP local de Windows, en lugar de 127.0.0.1 o localhost, también obtengo un ERR_CONNECTION_REFUSED.
Ya que estaba mirando las reglas del firewall, ¿quizás mire una regla de reenvío en lugar de solo un permiso de entrada?
Si todo lo demás falla, intente exportar o hacer una copia de seguridad de la sesión de WSL2 (consulte wsl --export ) y luego impórtelo como una nueva sesión de WSL1. A ver si funciona ahí.
En mi sistema WSL2/Ubuntu 20.04, intenté reproducir (pero aún no he podido) con los siguientes pasos:
mkdir -p ~/src/dj-test cd ~/src/dj-test python3 -m venv dj source dj/bin/activate pip install Django django-admin startproject config . python manage.py runserver (aunque usé activate.fish . pescado ya que estoy ejecutando el caparazón de pescado)
Desde el navegador web Vivaldi en Windows, accedió a localhost:8000 , que devolvió "¡La instalación funcionó correctamente! ¡Felicitaciones! ..."
curl bajo Powershell Core también funcionó.