Como você tem um endereço IP e muitos sites?

27

Como posso obtê-lo onde tenho um endereço IP que fica na Internet, mas muitos nomes da web? Por exemplo, quando uma empresa de hospedagem tem um IP compartilhado, mas eu recebo nomes de domínio ilimitados (junto com todos os demais nessa caixa).

Eu tenho uma caixa na Internet, mas quero apontar para outra máquina que contém um site diferente quando alguém digita os diferentes www ... (está sentado ao lado dele em apenas uma caixa diferente). Isso é tudo subdomínio? Obrigado.

Eu sou a empresa de hospedagem

johnny
fonte

Respostas:

36

Faz parte do protocolo HTTP 1.1.

Especificamente, o protocolo HTTP 1.1 inclui um cabeçalho chamado "host:", que especifica qual site em um servidor específico o cliente está tentando acessar.

Portanto, se snoopy.net e woodstock.org compartilharem 192.0.32.10 e seu navegador estiver tentando obter conteúdo da http://snoopy.net/doghouse solicitação http específica, será semelhante a:

GET /doghouse HTTP/1.1
Host: snoopy.net

Se o URL desejado for http://woodstock.org/seedso pedido, pareceria

GET /seeds HTTP/1.1
Host: woodstock.org

Nos dois casos, haveria um soquete tcp entre o computador e a porta 80 do servidor. O servidor saberia obter conteúdo de /var/www/snoopy.net ou /var/www/woodstock.org/ com base no cabeçalho Host.

Haveria outros cabeçalhos para cookies e outras coisas, como tipo de navegador e conteúdo permitido, mas o cabeçalho "Host" é especificamente o que permite ao servidor saber qual site virtual é desejado.

Há mais no RFC2616 .

É também por isso que os sites https * devem *** ter seu próprio endereço IP - a troca de chaves ssl e a verificação do certificado ocorrem antes da transação http, para que o servidor http não saiba como fornecer o certificado para "woodstock. org "ou" snoopy.net "quando recebe uma conexão https na porta 443 de 192.0.32.10.


editar

** nos comentários, o Grawity ressalta que existem extensões para SSL na especificação TLS que permitem ao servidor saber qual site o usuário está tentando acessar e que os navegadores mais modernos têm essas extensões, por isso deve ser um pouco demais Forte.

chris
fonte
para que o servidor da web veja esse cabeçalho e o mova para o site correto? Você pode ter vários sites na mesma porta assim?
johnny
1
É exatamente para isso que serve. Um "servidor", como o apache, possui a porta 80 de 192.0.32.10, que possui muitas entradas DNS, cada uma das quais é um "site". O servidor sabe qual é o site desejado com base no cabeçalho "host".
Chris
3
O DNS está configurado para fazer com que os dois nomes aponte para o mesmo endereço IP, onde o servidor está escutando. O servidor recebe conexões no mesmo IP e porta, mas, quando o navegador diz "Quero SiteA.com", ele sabe que precisa fornecer um conteúdo diferente do que quando solicitado pelo SiteB.com.
Massimo
2
Para ser ainda mais claro: os dois sites são diferenciados no nível do protocolo HTTP, não no nível TCP / IP. É como quando alguém liga para o seu escritório e pede para falar com John ou Susan: o número de telefone é o mesmo, mas mais de uma pessoa pode usá-lo.
Massimo
1
A maioria dos navegadores e servidores da Web agora oferece suporte à indicação de nome do servidor TLS, o que remove o requisito de um endereço IP por site.
grawity
12

Há algo que todo navegador moderno envia junto com a solicitação, chamado de "Host:" Header.

O pedido real que o Firefox envia para esta página é:

Anfitrião: superuser.com
Agente do usuário: Mozilla / 5.0 (Windows; U; Windows NT 6.0; en-US; rv: 1.9.1.7) Gecko / 20091221 Firefox / 3.5.7 (.NET CLR 3.5.30729)
Aceitar: texto / html, aplicativo / xhtml + xml, aplicativo / xml; q = 0,9, * / *; q = 0,8
Idioma de aceitação: en-us, en; q = 0,5
Accept-Encoding: gzip, deflate
Aceitar charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,7
Mantenha-Vivo: 300
Conexão: keep-alive

Como você pode ver, o

Anfitrião: superuser.com
bit identifica o site em questão.

No IIS e no Apache, você pode configurar sites virtuais que aceitam apenas solicitações de uma combinação específica de IP / host.

Quanto ao seu problema específico, você terá que ler como sua empresa de hospedagem deseja que você solicite a configuração.

John Gietzen
fonte
Isso também deve mencionar que você precisa definir várias entradas DNS para o seu endereço IP.
Tadeusz A. Kadłubowski
@Tadeusz: É possível configurar entradas DNS curinga, portanto isso não é estritamente necessário.
John Gietzen
6

A técnica para hospedar mais de um domínio / subdomínio em um único endereço IP / host é chamada de hosts virtuais . A solicitação http get contém o nome de domínio para o qual as solicitações permitem que o servidor da Web faça a correspondência da solicitação com um domínio virtual específico.

Se você possui vários hosts físicos internamente com apenas um IP externo, convém configurar o proxy reverso para encaminhar as solicitações para a máquina / endereço IP interno correto.

3dinfluence
fonte
ou você também pode ter outros servidores http em portas diferentes.
Chopper3
Sim, isso também é uma opção. Mas as pessoas não estão acostumadas a especificar uma porta ao digitar um URL, então eu reservaria essa solução para algumas situações, como uma interface de administração.
3dinfluence
3

O recurso em seu servidor da web é normalmente chamado de 'hosts virtuais'. Depois de apontar as entradas DNS para apontar para esse único endereço IP (como mencionado nas outras respostas), o servidor servirá os diferentes sites, dependendo do host solicitado.

Tanto quanto apontar para outra caixa, vale. Você pode configurar os redirecionamentos na maioria dos servidores Web, se espera obter a consulta primeiro. Se você está falando de subdomínios, tudo o que você faz é apontar cada um dos subdomínios para um endereço IP diferente.

host.com -> IP 1 e, em seguida, www.host.com -> IP 2 e mail.host.com -> IP 3

Se você quiser respostas mais específicas, precisará dizer qual software de servidor da web em qual sistema operacional você está executando.

Você pode achar que o ServeFault é um lugar melhor para esta pergunta.

Colin Newell
fonte
1

Em resumo...

Um - defina as entradas DNS para seus vários domínios para todos apontarem para sua caixa.

Dois - Conforme descrito por outras pessoas, configure seu servidor da web (você não diz qual) para corresponder ao nome do host solicitado.

Dessa forma, todas as solicitações de todos os seus domínios vão para a mesma máquina e sua configuração pega o domínio solicitado e o encaminha para a pasta correta que contém o conteúdo desse site.

Garry
fonte
0

Parece-me sua pergunta como se você tivesse um servidor físico separado para o segundo site. Nesse caso, você não poderá usar um único endereço IP para os dois servidores. Você pode: a) obter um segundo endereço IP público para o seu segundo host ou b) configurar um proxy inteligente que encaminhe solicitações para diferentes servidores na rede interna com base nos cabeçalhos do host. Tenho certeza de que b) é possível, mas não tenho uma idéia real de como isso funciona, então você terá que perguntar a outra pessoa se é isso que você está tentando fazer.

Catherine MacInnes
fonte
0

Se estou lendo sua pergunta corretamente, você tem dois computadores diferentes compartilhando um endereço IP via NAT (Network Address Translation)? Nesse caso, você precisará que um site escute em uma porta diferente (não 80) - não há uma maneira boa de eu saber que o roteador envie solicitações para computadores diferentes com base nos metadados HTTP "Host". É melhor obter um segundo endereço IP para o seu segundo servidor.

CarlF
fonte