- El
hosts
archivo es solo para resolución de nombre de host
- El navegador , en ausencia de especificar directamente el puerto: es decir
<hostname>:<port>
, valores por defecto al puerto80
Escenario de problema típico
- Por lo general, las aplicaciones configuran sus servidores con la misma dirección IP predeterminada,
127.0.0.1
también conocida localhost
(definida en el archivo hosts) .
Para evitar la colisión entre posiblemente otros servidores existentes / en ejecución, la aplicación generalmente le permite cambiar el puerto, pero no la dirección IP.
2a. Si pudiera cambiar la dirección IP de los servidores a otra en el espacio de direcciones reservado de bucle invertido 127.0.0.0/8
, entonces probablemente no estaría intentando establecer puertos en el archivo de hosts.
Solución posible
Puede solucionar esto utilizando la herramienta de red incluida en Windowsnetsh
como proxy de puerto.
Visión general
example.app
| <--browser defaults to port 80
+--> example.app:80
| <--Hostname resolution by Hosts File
+--> 127.65.43.21:80
| <--Link by netsh Utility
+--> 127.0.0.1:8081
Comportamiento
- Inicie su servidor en
localhost:8081
- Agregue el "DNS local" en el archivo de hosts como una nueva línea
127.65.43.21 example.app
- Se
127.0.0.0/8
puede usar cualquier dirección libre en la red .
- Nota: supongo que
127.65.43.21:80
no está ocupado por otro servicio.
- Puedes consultar con
netstat -a -n -p TCP | grep "LISTENING"
- agregue la siguiente configuración de red con la utilidad de
comando netsh
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
- Acceda al servidor en
http://example.app
Notas:
- Estas modificaciones de comandos / archivos deben ejecutarse con derechos de administrador
- netsh portproxy necesita bibliotecas de ipv6 incluso solo para usar v4tov4, por lo general, también se incluirán de forma predeterminada; de lo contrario, instálelas con el siguiente comando:netsh interface ipv6 install
Puede ver la entrada que ha agregado con el comando:
netsh interface portproxy show v4tov4
Puede eliminar la entrada con el siguiente comando:
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21
Enlaces a recursos:
Nota: esta respuesta es una duplicación de mi respuesta discutida en esta pregunta / respuesta similar en stackoverflow.