> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Eu digito em 93.184.216.34
vez de http://example.com
no Chrome. Não carrega o site. Por quê?
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Eu digito em 93.184.216.34
vez de http://example.com
no Chrome. Não carrega o site. Por quê?
Respostas:
Como o Host
cabeçalho HTTP adequado geralmente é necessário para realmente obter o site pretendido.
É muito comum hospedar vários sites no mesmo endereço IP e distinguir entre eles com base no Host
cabeçalho HTTP especificado pelo cliente (além do valor TLS SNI atualmente no caso de HTTPS).
Ou seja, quando você entrou http://example.com
no navegador, o Host
cabeçalho era example.com
, mas esse não é o caso quando você entrou 93.184.216.34
. Você alcança o mesmo servidor da Web em ambos os casos, mas recebe respostas diferentes (nesse caso específico 200 x 404).
Host
faz e para que servidores da Web geralmente o usam? É meio difícil pesquisar on-line porque essa palavra está sobrecarregada.
curl -H "Host: example.com" http://93.184.216.34/
ou algo assim.
example.com example.net example.org example.edu
os mesmos endereços, motivo pelo qual ele realmente precisa do nome no cabeçalho Host.
Como geralmente os servidores da Web usam a tecnologia "servidor virtual" e são capazes de responder à sua solicitação HTTP exatamente dentro do nome do domínio solicitado, mas não do endereço IP dos servidores da Web. Graças a ocultar mais de um nome de domínio em um endereço IP.
Por exemplo, o servidor da web Apache pode responder à sua solicitação HTTP com um endereço IP usando a seção:
<VirtualHost *:80>
ServerName Default
...
</VirtualHost>
ou se nenhum VirtualHost usado na configuração.
O recurso VirtualHost no Apache foi introduzido em 1996.
No Apache , você pode hospedar muitos sites usando apenas um único endereço IP. Isso é chamado de hospedagem virtual. É assim que os subdomínios podem ser criados, mesmo domínios independentes. Isso é feito configurando um arquivo de configuração do Apache contendo diretivas do VirtualHost para cada domínio / subdomínio.
Um servidor HTTP de exemplo que possui dois hosts virtuais, exemplo1.com e exemplo2.com pode se parecer com isso (definição de endereço IP):
<VirtualHost 93.184.216.34:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost 93.184.216.34:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
Também pode ser assim (definição baseada em nome):
<VirtualHost *:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
Nos dois casos, dois registros de host virtual são criados internamente na memória e usados pelo Apache para comparar quando chega uma solicitação de URI.
Quando um usuário digita o endereço IP por meio de um agente, o primeiro host virtual listado no arquivo de configuração é usado como o domínio principal (por exemplo, neste caso exemplo1.com).
Quando um usuário digita um nome de domínio, a solicitação é enviada para uma rede DNS da Internet pública (ICANN) que fornece o endereço IP associado a ele. Você registrou os dois através de um registrador da ICANN (como o GoDaddy). Você deve corrigir os dois e dar um tempo antes que a propagação ocorra em todos os servidores DNS na rede da ICANN. Hoje em dia, pode demorar até 24 horas.
Quando a solicitação é roteada para o servidor HTTP Apache, o endereço IP e o nome do domínio são comparados com a lista de registros internos do VirtualHost. Quando um é encontrado, a raiz do documento é usada para formar o caminho completo do sistema de arquivos para o recurso do objeto para retornar ao agente do usuário. Caso contrário, um HTTP 404 é enviado junto com qualquer documento de erro associado a ele.
Eu gosto de usar a terminologia "casa".
Você pode facilmente enviar uma carta para uma casa sem um nome e ela chegará à casa.
Se você colocar o nome da pessoa, estará enviando para o destinatário pretendido.
O destino é o mesmo, mas como é tratado quando chega em casa é diferente.
Quando você especifica o site, ou seja, www.example.com, o servidor sabe como lidar com a solicitação e em qual host ele se destina e em qual site servir de volta.
O termo principal a ser pesquisado é "hospedagem virtual baseada em nome".
As pessoas desejam alocar vários nomes de host para o mesmo servidor da web e veicular conteúdo diferente para cada nome de host. Isso é conhecido como hospedagem virtual (não deve ser confundido com o conceito mais recente de máquinas virtuais).
Inicialmente, a hospedagem virtual era feita alocando vários endereços IP para o servidor; o servidor podia enviar conteúdo diferente com base no endereço IP usado, mas isso era considerado um desperdício.
Portanto, o cabeçalho "host" foi introduzido, inicialmente como uma extensão, mas depois tornou-se uma parte obrigatória da especificação http 1.1 em 1997. Esse cabeçalho especifica o nome do host que o cliente solicitou. O servidor pode então exibir conteúdo diferente com base no valor do cabeçalho.
Para manter os custos baixos para servidores web, muitos servidores hospedam vários sites. Eles fazem isso usando hosts virtuais, ou Vhosts, no apache2 / nginx / etc. Portanto, se você for diretamente para o endereço IP do site, provavelmente receberá uma tela "O Apache está funcionando" ou possivelmente será redirecionado para o site principal do servidor.
Um Vhost examina o endereço do site recebido e o compara aos nomes ServerName ou ServerAlias nos arquivos Vhosts ativados. Se um deles corresponder, esse site específico será carregado.
A menos que o site tenha uma carga enorme (alto número de visitantes únicos / visualizações de página) ou gerencie aplicativos de alta carga (pense em youtube.com, facebook etc.), é provavelmente mais econômico operar em um servidor compartilhado. Seria um desperdício de dinheiro adquirir um servidor dedicado (a partir de US $ 60 / mês) apenas para executar um site de blog do Wordpress. É melhor obter uma plataforma compartilhada em um servidor com provavelmente mais de 200 sites em um servidor. Os custos serão maiores na área de US $ 5 / mês.
Outro motivo para fazer isso é a falta de endereços IP. Simplesmente não há endereços IPv4 suficientes. É apenas através do uso do NAT para redes domésticas / comerciais e do uso do Vhosts que restamos algum. Mesmo quando o IPv6 se tornar o fluxo principal, os servidores provavelmente seguirão o Vhosts (custos do servidor).
Um endereço IP dedicado é caro, enquanto a criação de um novo site em um servidor é basicamente gratuita.
O que acontece é que a empresa de hospedagem aluga um único endereço IP que aponta para um servidor físico e hospeda milhares de sites nesse endereço IP usando o recurso "host virtual"
Pense como uma caixa postal, se você apenas escrever o endereço da agência postal, mas sem o número da caixa, o correio não será entregue.
Há muitas respostas aqui com detalhes técnicos, mas acho que a explicação mais simples de alto nível é que, mesmo que um servidor Web esteja escutando adequadamente o tráfego http em seu endereço IP, o servidor geralmente também deve ser configurado para responder a um domínio específico nome e esse nome deve estar na solicitação enviada pelo cliente (ou seja, o navegador da web)
Eu digo "normalmente", porque quase sempre é feito dessa maneira, mas na verdade existem métodos nos quais você pode configurar o servidor http para responder se apenas o endereço IP for usado.
Precisamos entender as diferenças entre IPs virtuais e IPs dedicados.
Se um site tiver um IP dedicado (não compartilhado), (por exemplo) http://123.456.789.012 exibirá o site.
Tente isso, que é o endereço IP dedicado de um site que eu possuo, www.negativeiongenerators.com: http://75.126.128.174 Mas, como outros já disseram, geralmente não é uma boa idéia.