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

25

Como posso ter 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 possui um site diferente quando alguém digita na www diferente ... (está sentado ao lado dele em apenas uma caixa diferente). Isso é tudo subdominio? Obrigado.

Eu sou a empresa de hospedagem

    
por johnny 27.01.2010 / 18:09

7 respostas

33

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 determinado servidor o cliente está tentando acessar.

Assim, se snoopy.net e woodstock.org compartilharem 192.0.32.10 e seu navegador estiver tentando obter o conteúdo de http://snoopy.net/doghouse , a solicitação http específica ficaria assim:

GET /doghouse HTTP/1.1
Host: snoopy.net

Se o URL desejado for http://woodstock.org/seeds , a solicitação será semelhante a

GET /seeds HTTP/1.1
Host: woodstock.org

Em ambos os casos, haveria um soquete TCP entre o seu 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 do host.

Haverá 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 que o servidor da Web saiba qual site virtual é desejado.

Há mais na RFC2616 .

Também é por isso que os sites https * devem *** ter seu próprio endereço IP - a verificação da chave e do intercâmbio de chaves ssl ocorre antes da transação http, portanto, o servidor http não saberá 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 Grawity indica que há 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 da web mais modernos têm essas extensões, então deve ser um pouco strong demais.

    
por 27.01.2010 / 18:55
11

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

A solicitação real enviada pelo firefox para esta página é:

Host: superuser.com
User-Agent: 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)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Como você pode ver, o

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

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

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

    
por 27.01.2010 / 17:02
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 são permitidas, permitindo que o servidor da Web corresponda a solicitação com um domínio virtual específico.

Se você tiver vários hosts físicos internamente com apenas um IP externo, convém investigar a configuração do proxy reverso para encaminhar os pedidos para a máquina correta / endereço IP interno.

    
por 27.01.2010 / 18:14
3

O recurso no seu servidor da web é normalmente chamado de 'hosts virtuais'. Uma vez que você aponte as entradas do DNS para apontar para aquele endereço IP (como mencionado nas outras respostas), o servidor irá então server os diferentes sites dependendo de qual é o host requisitado.

Tanto quanto apontar para outra caixa vai. Você pode configurar redirecionamentos na maioria dos servidores da Web se estiver esperando obter a consulta primeiro. Se você está falando sobre subdomínios, tudo que você faz é apontar cada um dos sub-domínios para um endereço IP diferente.

i.e. host.com - > IP 1 então www.host.com - > IP 2 e mail.host.com - > IP 3

Se você quiser respostas mais específicas, precisará informar qual software de servidor da web está usando o sistema operacional em execução.

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

    
por 27.01.2010 / 17:42
1

Em suma ...

Um - Defina as entradas de DNS para seus vários domínios para apontar para sua caixa.

Dois - Como descrito por outros, 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 recebe o domínio solicitado e as encaminha para a pasta correta que contém o conteúdo desse site.

    
por 27.01.2010 / 17:37
0

Parece-me pela sua pergunta que você tem 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 seu segundo host ou b) configurar um proxy inteligente que encaminha solicitações para diferentes servidores em sua 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.

    
por 27.01.2010 / 19:35
0

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

    
por 27.01.2010 / 17:47