hosts arquivo e comportamento pouco claro. Como fazer um verdadeiro alias?

2

Estou tentando criar um alias para o meu site local, que é executado pelo vagrant (caixa virtual), por isso quero redirecionar todos os pedidos do site.ru para 192.168.10.10/site.ru via /etc/hosts file. No arquivo hosts, tenho o seguinte:

...
192.168.10.10/site.ru    site.ru

No entanto, não funciona como eu quero. Quando eu vou ao site.ru eu sou exibido no site 'real'. Espero que alguém me entenda para responder pela minha pergunta ..

O que eu fiz de errado?

ATUALIZAÇÃO: Solução: Como configurar hosts virtuais dinâmicos em massa no nginx?

    
por Timur Fayzrakhmanov 20.01.2014 / 21:25

2 respostas

4

Você pode definitivamente direcionar um nome de host para um endereço IP em sua LAN com o arquivo hosts do Ubuntu, mas ele não suporta a sintaxe específica que você está usando. De man hosts :

  

Este arquivo é um arquivo de texto simples que associa endereços IP com   hostnames, uma linha por endereço IP. Para cada host, uma única linha deve   estar presente com as seguintes informações:

IP_address canonical_hostname [aliases...]

O arquivo hosts no Ubuntu não direciona nomes de host com outros nomes de host , mas apenas com endereços IP.

Portanto, em vez de escrever:

192.168.10.10/site.ru    site.ru

Você deve escrever:

192.168.10.10            site.ru

Isso fará com que site.ru seja resolvido para 192.168.10.10 em vez do que seria resolvido pelo DNS.

No entanto, , isso pode ou não direcionar efetivamente todo o tráfego associado (conceitualmente) ao nome do domínio site.ru . Em particular, normalmente não será suficiente para fazer com que um domínio como www.site.ru também seja mapeado para 192.168.10.10. Para isso, adicione www.site.ru explicitamente:

192.168.10.10            site.ru   www.site.ru

(Você pode, alternativamente, criar uma linha separada para ele, se preferir. Essa linha também deve começar com um endereço IP.)

Mas hosts não direcionará tráfego para uma pasta específica em um site.

Se por 192.168.10.10/site.ru você quer dizer o diretório site.ru no servidor web em 192.168.10.10 (ou seja, se você estiver usando / como um path separador ), você não pode usar o arquivo hosts para fazer isso. hosts arquivos não facilitam esse comportamento em qualquer sistema operacional; é fundamentalmente não relacionado com o que os arquivos hosts fazem.

A razão pela qual isso não pode funcionar é que os arquivos hosts redirecionam nomes de host para endereços IP. Mas 192.168.10.10/site.ru não é um endereço IP. É um endereço IP seguido por informações de recuperação de diretório enviadas para o endereço IP por meio de um protocolo da camada de aplicação . Veja este artigo sobre o significado das diferentes partes de um URL (e como apenas uma parte é resolvida via IP).

A solução adequada nesse tipo de situação é configurar o servidor da web para exibir conteúdo diferente, dependendo do nome do host usado para acessar o site. Isso pode funcionar porque o protocolo HTTP inclui a capacidade de os navegadores da Web informarem ao servidor da Web qual nome de host ele está usando (e essencialmente todos os navegadores da Web enviam essas informações sempre que for aplicável).

Se você tiver a capacidade de fazer alterações no servidor da Web e precisar de ajuda para configurar "hosts virtuais", e o servidor web é um sistema Ubuntu, por favor sinta-se livre para postar uma questão separada sobre isso aqui.

Se você não puder fazer alterações no servidor da Web, fale com quem quiser.

Se mesmo isso não for absolutamente uma opção, você deve editar sua pergunta (ou postar uma nova, sua escolha) para esclarecer sua situação em detalhes. Uma solução mais confusa que atenda às suas necessidades pode ser possível. Ele provavelmente envolveria um servidor proxy HTTP em execução em cada máquina cliente e redirecionaria o tráfego HTTP por URL .

    
por Eliah Kagan 20.01.2014 / 21:40
0

Essa é a sintaxe correta IP ADDRESS SITE.COM exemplo real 127.0.0.134 hackme.org

    
por Ismail Yushaw 20.01.2014 / 21:45