Usando o número da porta no arquivo host do Windows


190

Depois de instalar o TeamViewer, alterei a porta do wampserver para 8080, para que o endereço seja http://localhost:8080.

Para o arquivo host localizado em C: \ WINDOWS \ system32 \ drivers \ etc \, também fiz a alteração conforme abaixo

ANTES
127.0.0.1 www.example.com

DEPOIS DE
127.0.0.1:8080 www.example.com

Quando acesso www.example.com, ele não é redirecionado para o meu wampserver, como posso corrigi-lo?


Você precisa servidor NGNIX ou Apache HTTP como um servidor proxy para o encaminhamento http pedidos para aplicação apropriada -> que escuta determinada porta (ou fazê-lo com CNAME que fornece empresa de hospedagem)
— Musa


Talvez revise isso e mude a resposta aceita para a resposta netsh? Acabei aqui ao tentar descobrir como mapear domínios .test para minhas imagens do docker localmente no Windows 10, e a resposta netsh funcionou como um encanto!
— Jereme

A questão é: você está tentando redirecionar um host inteiro para uma única porta (?!) Ou apenas a porta 80 (desse host) para a porta 8080? A maioria das respostas aqui são sobre como redirecionar (ou pelo menos tentar redirecionar ... ;-) a porta 80 de um host para a porta 8080 do seu "host local". Exemplo: https://www.example.comdeve ir para a porta 8080? ou para o padrão 443? (como deveria) O que significa: você deseja que um https também seja redirecionado para a porta 8080 do seu host local? Ou você não se importa onde isso será redirecionado?
— ilias iliadis

Respostas:


194

o hosts arquivo é apenas para resolução de nome de host (no Windows e em sistemas similares ao Unix). Você não pode inserir números de porta e não há como fazer o que deseja com a configuração genérica no nível do sistema operacional - o navegador é o que seleciona a porta a ser escolhida.

Portanto, use marcadores ou algo parecido.
(Alguns softwares de firewall / roteamento podem permitir o redirecionamento de porta de saída, mas isso realmente não soa como uma opção atraente para isso.)


6
como usar marcadores, você pode nos levar a um link ou alguma documentação ou tutoriais sobre isso
— adham dwikat

@Jereme: você deve dizer que o OP, eu não posso fazer nada sobre isso
— Mat

1
@ Mat Isso seria bom, certo? Eu só quero que outras pessoas que vêem isso rolem um pouco para baixo e experimentem. Acabei aqui ao tentar descobrir como mapear domínios .test para minhas imagens do docker localmente no Windows 10, e a resposta netsh funcionou como um encanto!
— Jereme

169

O que você deseja pode ser alcançado modificando o arquivo hosts através do Fiddler 2 aplicativo .

Siga esses passos:

  1. Instale o Fiddler2

  2. Navegue até o menu do Fiddler2: - Ferramentas > HOSTS .. (Clique para selecionar)

  3. Adicione uma linha como esta: -

    localhost:8080 www.mydomainname.com

  4. Salve o arquivo e faça o checkout www.mydomainname.comno navegador.


34
Esta é uma solução ruim. Você precisa ter o Fiddler funcionando o tempo todo.
— James Huckabone

48
@JamesHuckabone: Você tem uma solução melhor? nós adoraríamos isso!
— Rajat Gupta

16
Recebo erro 400 Bad Request quando eu uso este método
— Sam

3
isso não parece mais funcionar. Tentei com fiddler2 e fiddler4
— basher

1
O @basher U ainda pode escrevê-lo no Rules.js do Fiddler, com certeza. A funcionalidade de hosts no Fiddler NÃO é o Windows hospeda arquivos, é uma recriação desses nomes para facilitar o trabalho. É como os Autoresponders, são apenas um subconjunto do que você pode fazer usando scripts diretamente. Se você não pode fazer algo com menus, faça um script.
— M3nda

157

Consegui fazer isso usando a ferramenta de rede incluída no Windowsnetsh .

Como Mat salienta: O arquivo hosts é apenas para resolução de nomes de host, portanto, uma combinação dos dois fez o truque para mim.

Exemplo


Visão geral

example.app:80
 |                           <--Link by Hosts File
 +--> 127.65.43.21:80
       |                     <--Link by netsh Utility
       +--> localhost:8081

Ações

  • Iniciou meu servidor em localhost:8081
  • Adicionado meu "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( 127.x.x.x) pode ser usado.
      • Nota: Estou assumindo127.65.43.21:80 não está ocupado por outro serviço.
      • Você pode verificar com netstat -a -n -p TCP | grep "LISTENING"
  • adicionada 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
  • Agora posso acessar 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 apenas 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:


Isso não está funcionando para mim. No link que você mostrou, diz "Além disso, você não pode usar 127.0.0.1 como endereço de conexão".
— Don Box

@ DonBox: Se você fornecer mais alguns detalhes sobre sua configuração, talvez eu possa ajudá-lo. Usar 127.0.0.1 como endereço de conexão é basicamente o requisito no cenário de caso apresentado, porque o servidor iniciou no localhost , como, por padrão, muitos outros programas. Se você puder iniciar em outro endereço, não precisará de todo o mecanismo de encaminhamento de porta, basta modificar o arquivo hosts ... Talvez, conforme detalhado aqui , você não tenha o protocolo ipv6 instalado: use o seguinte comando para instalar eles:netsh interface ipv6 install
— Pau Coma Ramirez

13
Esta deve ser a resposta aceita, porque as ferramentas já estão instaladas na minha instalação básica do Windows 10 e isso faz exatamente o que eu precisava. Eu estava pensando em instalar o apache e o mod_proxy, mas esta é uma solução muito melhor.
— Max novo

1
Não funciona para mim. Netsh parece encaminhar o endereço, mas não a porta.
— 151117 steph643

2
Eu uso o portuário do estivador. Ele usa o host local na porta 9000. Modificando o comando acima, eu uso o portainer.local sem precisar especificar uma porta no endereço. Primeiro, adiciono 127.0.0.1como o endereço para corresponder portainer.localno meu arquivo hosts. Então eu corro: netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.0.0.1 connectport=9000 connectaddress=127.0.0.1 Pressione a tecla Enter no cmd / powershell para executá-lo. Depois disso, saia do netsh digitando exit. No navegador, digitar http://portainer.localagora me leva para onde http://localhost:9000costumava. Isso funcionou como um encanto para mim.
— EffectiX 23/07/19

14

Fiddler2 -> Regras -> Regras personalizadas

em seguida, encontre a função OnBeforeRequest em colocar no próximo script no final:

if (oSession.HostnameIs("mysite.com")){
    oSession.host="localhost:39901";
}

Na verdade, o Fiddler é tão poderoso quanto o esperado para não executar um servidor da Web na porta 80, ou até mesmo o Skype ... No Windows funciona melhor do que no Linux com Mono, pelo menos os recursos de captura, porque o Linux não usa o Inet do CLRL. Esta é uma maneira mais agradável de fazer as coisas no Fiddler, porque é exportável com 1 arquivo.
— M3nda

3

A maneira mais simples é usar o Ergo como seu proxy reverso: https://github.com/cristianoliveira/ergo

Você define seus serviços e seu IP: PORT e, portanto, o encaminha para você :).

Você pode conseguir o mesmo usando nginxou apachemas precisará configurá-los.


3
Ergo parece ser um projeto em que você trabalhou (com base no nome de usuário). Se for esse o caso, você deve indicar mais explicitamente que é afiliado a esse produto. Veja esta resposta , bem como as outras respostas.
— 31418 Frank Frank Tan

2

-Você pode usar qualquer endereço gratuito na rede 127.0.0.0/8, no meu caso, precisava disso para o balão python e é isso que eu fiz: adicione esta linha no arquivo hosts (você pode encontrar as janelas em: C: \ Windows \ System32 \ drivers \ etc):

127.0.0.5 flask.dev
  • Verifique se a porta é a porta padrão "80", no meu caso, é o que está no balão python: app.run("127.0.0.5","80")

  • agora execute seu código e navegue flask.dev


1

Se o que está acontecendo é que você possui outro servidor em execução no host local e deseja atribuir a esse novo servidor um nome de host local diferente, como http://teamviewer/

Eu acho que o que você está realmente procurando é a funcionalidade de hosts virtuais. Eu uso o Apache, então não sei como outros daemons da Web suportam isso. Talvez se chame Alias. Aqui está a documentação do Apache:

Exemplos de hosts virtuais do Apache


1

Usar netsh com connectaddress = 127.0.0.1 não funcionou para mim.

Apesar de procurar em toda parte na internet, não consegui encontrar a solução que resolveu isso para mim, que era usar o endereço address = 127.xxx (ou seja, qualquer endereço 127. ipv4, mas não 127.0.0.1), pois isso parece vincular ao localhost apenas. o mesmo, mas sem a restrição, para que o loopback funcione em netsh.


Eu sugiro que você remova o primeiro e o último parágrafo. Diga apenas que as soluções existentes não funcionaram e você encontrou outra. Caso contrário, sua resposta será muito parecida com um comentário, para que as pessoas possam sinalizá-la como "não uma resposta" e ela será removida.
— precisa saber é o seguinte


0

Você precisa do servidor HTTP NGNIX ou Apache como servidor proxy para encaminhar solicitações http para o aplicativo apropriado -> que escuta uma porta específica (ou faz isso com CNAME, que fornece a empresa de hospedagem). É a solução mais poderosa e é apenas uma maneira muito fácil de continuar adicionando novos subdomínios ou de adicionar novos domínios automaticamente quando os registros DNS são apontados para o servidor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.