É a seguinte parte de uma configuração de host virtual que preciso de mais esclarecimentos:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin [email protected]
ServerName 141.29.495.999
ServerAlias example.com
...
Este é um exemplo de configuração, semelhante ao que tenho atualmente (não tenho um nome de domínio no momento).
<VirtualHost *:80>
- Permitir as seguintes configurações para todas as solicitações HTTP feitas na porta 80 para IPs em que este servidor pode ser contatado. Por exemplo, se o servidor puder ser acessado em mais de um IP, você poderá restringir essa diretiva a apenas um em vez de ambos.
ServerName
- Se a parte do host da solicitação HTTP corresponder a esse nome, permita a solicitação. Normalmente, este seria um nome de domínio que mapeia para um IP, mas, neste caso, o host de solicitação HTTP deve corresponder a esse IP.
ServerAlias
- Nomes alternativos aceitos pelo servidor.
A parte confusa para mim é que, no cenário acima, se eu definir ServerAlias mytestname.com
e depois fizer uma solicitação HTTP para mytestname.com
, teria que haver um registro DNS apontando para o IP do servidor para que isso funcionasse? Nesse caso, ServerAlias é basicamente entradas EXTRA ServerName?
Digamos que eu tivesse uma entrada DNS tal que, foobar.com = 141.29.495.999
mas então eu tinha ServerName = 141.29.495.999
e ServerAlias
estava vazio, isso significaria que, embora foobar.com seja resolvido para o IP correto, porque não há referência para aceitar foobar.com em ServerName
ou ServerAlias
?
Ou alguma coisa. Cara estou confuso.
Pense assim:
DNS é o diretório do telefone/páginas amarelas. Quando alguém quiser ligar para o seu telefone, poderá procurar o seu nome, obter o seu número de telefone e ligar para esse telefone. O DNS faz o mesmo, mas para computadores - quando alguém quer ir
www.example.com
, pede ao DNS o endereço IP e, em seguida, pode entrar em contato com o computador que possui esse endereço IP. É isso que significa resolver . Resolver um endereço IP não tem nada a ver com o Apache; é estritamente uma questão de DNS.O
ServerName
eServerAlias
é mais parecido com a lista telefônica interna de uma empresa. Seu servidor web é a central telefônica; ele aceitará todas as conexões de entrada para o servidor. Em seguida, o cliente/chamador informará qual nome está procurando e procurará na configuração do Apache como lidar com esse nome.Se o nome não estiver listado como ServerName/ServerAlias na configuração do apache, o apache sempre fornecerá o primeiro VirtualHost listado. Ou, se não houver nenhum VirtualHost, ele fornecerá o mesmo conteúdo, independentemente do nome do host fornecido na solicitação.
ETA: Então, passo a passo para uma conexão normal:
http://www.example.com
no seu navegador.www.example.com
.www.example.com
(esse é oHost:
cabeçalho em HTTP).www.example.com
. Qualquer um dos seguintes pode acontecer:www.example.com
está listado como umServerName
ouServerAlias
para umVirtualHost
- se sim, ele usará a configuração desse VirtualHost para entregar o conteúdo.www.example.com
não está listado em nenhum deles - nesse caso, o primeiro Virtualhost da lista será usado para entregar o conteúdo.Se você não definir ServerName, o apache2 tentará adivinhar em /etc/hosts. ServerAlias é opcional. O caso de uso mais comum é onde
Depende de você (não do trabalho do apache2) garantir que as solicitações cheguem ao IP do servidor web, por exemplo, registrando um domínio e configurando registros DNS. Uma maneira muito comum de fazer isso (para teste e desenvolvimento) sem registros de domínio e dns é definir o arquivo /etc/hosts da sua máquina local para que example.com aponte para o IP do seu servidor.
Eu sugiro fortemente que leia a documentação oficial sobre o tema: https://httpd.apache.org/docs/2.4/vhosts/name-based.html
ele diz "Se nenhum ServerName ou ServerAlias correspondente for encontrado no conjunto de hosts virtuais que contém o endereço IP e a combinação de porta correspondentes mais específicos, o primeiro host virtual listado que corresponda será usado." . Então, no seu caso, se você acessar "foobar.com", a primeira entrada VirtualHost que de alguma forma corresponde ao IP 141.29.495.999 seria usada pelo httpd
O mesmo documento diz "Muitos servidores querem ser acessíveis por mais de um nome. Isso é possível com a diretiva ServerAlias". Portanto, você pode considerar ServerAlias simplesmente como entradas adicionais de ServerName.