- O
hosts
arquivo é apenas para resolução de nome de host
- O navegador , na ausência de especificar diretamente a porta: ou seja
<hostname>:<port>
, o padrão é port80
Cenário de problema típico
- os aplicativos normalmente configuram seus servidores para o mesmo endereço IP padrão,
127.0.0.1
também conhecido como localhost
(definido no arquivo hosts) .
para evitar colisão entre possivelmente outros servidores existentes / em execução, o aplicativo normalmente permite alterar a porta, mas não o endereço IP.
2a Se você pudesse alterar o endereço IP do servidor para outro no espaço de endereço reservado para loopback 127.0.0.0/8
, provavelmente não tentaria definir portas no arquivo de hosts.
Solução possível
Você pode contornar isso usando a ferramenta de rede incluída no Windowsnetsh
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
127.65.43.21 example.app
- Qualquer endereço gratuito na rede
127.0.0.0/8
pode ser usado.
- Nota: Estou assumindo que
127.65.43.21:80
não está ocupado por outro serviço.
- Você pode verificar com
netstat -a -n -p TCP | grep "LISTENING"
- adicione a seguinte configuração de rede com o utilitário de
comando netsh
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
- Acesse o servidor em
http://example.app
Notas:
- Esses comandos / modificações de arquivos precisam ser executados com direitos de administrador
- netsh portproxy precisa de bibliotecas ipv6 mesmo para usar v4tov4; normalmente elas também serão incluídas por padrão; caso contrário, instale-as usando o seguinte comando:netsh interface ipv6 install
Você pode ver a entrada que você adicionou com o comando:
netsh interface portproxy show v4tov4
Você pode remover a entrada com o seguinte comando:
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21
Links para Recursos:
Nota: esta resposta é uma duplicação da minha resposta discutida nesta pergunta / resposta semelhante no stackoverflow.