Posso configurar o arquivo de hosts do Windows para usar o endereço IP mais a porta?

9

Desejo configurar o arquivo hosts do Windows para enviar solicitações de host com base no endereço IP + portas.

Por exemplo:

127.0.0.1:80       www.site1.com
127.0.0.1:8080     www.sitetwo.com

Porque tenho o Apache escutando na porta 8080 e IIS na porta 80 (padrão).

Então, acho que a melhor maneira de fazer isso é modificar o arquivo hosts . Não está afetando nada. Nem estou recebendo nenhum erro nem qualquer mensagem.

    
por Peter Mortensen 21.02.2010 / 19:16

8 respostas

11

Você não pode. O arquivo hosts é apenas isso - hosts. É o equivalente a um DNS "curto-circuitado" dentro de sua máquina local. O DNS também não pode enviar você para as portas.

Para alcançar o que você está tentando fazer, você deve configurar a hospedagem virtual no IIS ou no Apache e usá-la (com base no cabeçalho HTTP Host:) para permitir que o serviço decida qual site apresentar. Isso não ajudará você, no entanto, se quiser fazer isso com o IIS e o Apache simultaneamente.

    
por 21.02.2010 / 19:33
3

Não, você não pode. Se não estiver funcionando, alguma outra coisa está errada.

127.0.0.1 site.com
127.0.0.1 www.site.com

Suponho que isso seja para uma caixa de desenvolvimento?

O DNS resolverá o site.com e o site www.site.com para o localhost, desde que você não esteja fazendo o mesmo com o proxy das consultas do DNS. Provavelmente você deveria perguntar no ServerFault para obter ajuda na configuração do servidor, esse é o problema mais provável.

    
por 21.02.2010 / 19:35
3

Você pode fazer isso com Fiddler . Com script do Fiddler , você pode fazer muitas coisas incríveis.

Se você definir hosts como este

127.0.0.1     www.site1.com    # Port 80
127.0.0.1     www.sitetwo.com  # Port 8080

Adicione isto em CustomRules.js (para abrir CustomRules.js , escolha Personalizar Regras nas Regras do Fiddler menu)

// this method is already exist
static function OnBeforeRequest(oSession: Session) {  
    if (oSession.host.toLowerCase() == "www.sitetwo.com") 
        oSession.host = "www.sitetwo.com:8080";
    ...
}

Em seguida, o Fiddler converte o host e você se conectará à porta 8080.

    
por 25.01.2013 / 10:29
2
  • 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

  1. aplicativos normalmente definem seus servidores para o mesmo endereço IP padrão 127.0.0.1 aka localhost (definido no arquivo de hosts) .
  2. 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.

    
por 15.09.2016 / 11:50
1

Você está usando os servidores somente para desenvolvimento local? Se assim for, você poderia colocar o seu Apache para ouvir 127.0.0.2:80 e redirecionar isso com o arquivo hosts para o nome de domínio que você gosta.

    
por 07.04.2014 / 12:30
0

Como acontece com as outras respostas, o arquivo host não tem informações sobre a porta, mas você pode ter uma página que redireciona o cabeçalho, como o apache ou o IIS, para hospedagem virtual baseada em nome. Verifique o cabeçalho e redirecione conforme necessário. No entanto, eu realmente não vejo o valor disso enquanto você está reinventando a roda. O Apache suporta hospedagem virtual baseada em porta e eu assumo que o iis faz isso.

O seu objetivo é ter uma máquina de desenvolvimento com os dois funcionando, isso é para uma situação de produção.

    
por 21.02.2010 / 19:51
0

Siga estas etapas:

Install Fiddler2

Navigate to Fiddler2 menu:- Tools > HOSTS.. (Click to select)

Add a line like this:-

localhost:8080        www.mydomainname.com

Save the file & then checkout www.mydomainname.com in browser.

link

    
por 14.03.2014 / 08:32
-1

Isso é o que você pode fazer, seria útil apenas para o desenvolvimento local.

arquivo hosts:

  • 127.0.0.1 local.site1.com
  • 127.0.0.1 local.site2.com

No IIS, crie um novo site e para local.site1.com & local.site2.com

Configuração do IIS

  • Endereço IP: Todos Não atribuídos (usaria host local ou qualquer outro ip disponível)
  • Porta: qualquer outra que não esteja em uso (81,82,83 e assim por diante. 80 já está em uso pelo Site padrão)
  • Nome do host: deixe em branco

Você é bom para ir. Apenas certifique-se de que as portas que você usou não estão em uso por algum outro processo & também estão abertos a partir de firewall, antivírus, etc.

Depois disso, você pode usar os seguintes URLs para acessar sites da máquina local ou da LAN.

por 04.09.2014 / 12:58