- O arquivo
hosts
é apenas para resolução de nomes de host
- O navegador , na ausência de especificar diretamente a porta: ou seja,
<hostname>:<port>
, padrões para a porta 80
Cenário Típico do Problema
- aplicativos normalmente definem seus servidores para o mesmo endereço IP padrão
127.0.0.1
aka localhost
(definido no arquivo de hosts) .
-
para evitar a colisão entre possivelmente outros servidores existentes / em execução, o aplicativo normalmente permite que você altere a porta, mas não o endereço IP.
2a. Se você puder alterar o endereço IP dos servidores para outro no espaço de endereço reservado de loopback 127.0.0.0/8
, então você provavelmente não estaria tentando definir portas no arquivo de hosts.
Solução possível
Você pode contornar isso usando a ferramenta de rede Windows incluída netsh
como um proxy de porta.
Visão geral
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
Ações
- Inicie seu servidor em
localhost:8081
- Adicione o "DNS local" no arquivo de hosts como uma nova linha
-
%código%
- Qualquer endereço gratuito na rede
127.65.43.21 example.app
pode ser usado.
-
Observação: estou assumindo que
127.0.0.0/8
não está ocupado por outro serviço.
- Você pode verificar com
127.65.43.21:80
- adicione a seguinte configuração de rede com o utilitário netsh command
-
netstat -a -n -p TCP | grep "LISTENING"
- Acesse o servidor em
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
Notas:
- Estes comandos / modificações de arquivo precisam ser executados com direitos de administrador
- netsh o portproxy precisa de bibliotecas ipv6 mesmo apenas para usar o v4tov4, normalmente elas também ser incluído por padrão, caso contrário, instale-os usando o seguinte comando: http://example.app
Você pode ver a entrada adicionada com o comando:
netsh interface ipv6 install
Você pode remover a entrada com o seguinte comando:
netsh interface portproxy show v4tov4
Links para recursos:
Observação: essa resposta é uma duplicação da minha resposta discutida em esta pergunta / resposta semelhante em stackoverflow.