1. Você não precisa do segundo endereço IP para servir mais de um host virtual no servidor. Algo mais como entendi corretamente, você tem apenas um IP estático. Portanto, se você não tiver outros requisitos especiais, aconselho-o a reverter as alterações relacionadas às interfaces de rede.
2. Não é obrigatório fazer nada com /etc/hosts
. Este arquivo serve como DNS local e se você quiser acessar seu nome de domínio (FQDN) localmente (da própria máquina, quando você não tem acesso à Internet ou configuração de DNS) uma nova linha como a próxima é suficiente:
127.0.0.1 example.com www.example.com second-example.com www.second-example.com
- Por favor, note que dentro da pergunta está escrito
127.0.0.1 example.com.
- provavelmente o ponto até o final é copiar / colar.
3. Como os hosts virtuais funcionam?
No lado do cliente, quando você digita qualquer FQDN no navegador (por exemplo http://example.com
) ele verifica [1] se há um registro para este FQDN em /etc/hosts
. Se não for apresentado tal registro, ele pergunta ao seu DNS (fornecido em /etc/network/interfaces
ou em /etc/resolv.conf
, ou por DHCP) o endereço IP do FQDN solicitado. E o DNS retorna o A
record para o solicitado nome do domínio. Em seguida, o navegador envia uma solicitação HTTP para o endereço IP fornecido. O cabeçalho da solicitação contém o IP, o nome de domínio totalmente qualificado, etc .
- [1] não é exatamente o navegador, mas eu não quero estender a resposta.
No lado do servidor, quando uma solicitação chega ao endereço IP do servidor em determinada porta, essa solicitação será tratada pelo serviço que escuta essa porta. O padrão HTTP
/ HTTPS
port é 80
/ 443
e o Apache ouça-os - isso é definido em /etc/apache2/ports.conf
.
Quando o Apace manipula a solicitação, ele lê o cabeçalho da solicitação e redireciona a solicitação para o host virtual que corresponde ao nome do domínio no cabeçalho da solicitação.
4. Não use a tag VirtualHost desta maneira: <VirtualHost mydomain.com:80>
. Este é um erro de digitação . Em vez disso, use-o como está por padrão: <VirtualHost *:80>
. Na verdade, o asterisco *
significa todas as interfaces de rede disponíveis (endereços IP manipulados pelo servidor).
5. De acordo com o acima, a configuração do seu Apache deve ficar assim:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot "/var/www/example.com/public_html"
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName second-example.com
ServerAlias www.second-example.com
ServerAdmin [email protected]
DocumentRoot "/var/www/second-example.com/public_html"
ErrorLog ${APACHE_LOG_DIR}/second-example.com.error.log
CustomLog ${APACHE_LOG_DIR}/second-example.com.access.log combined
</VirtualHost>
-
Normalmente, as definições dos diferentes hosts virtuais são colocadas em arquivos
.conf
separados para serema2ensite
/a2dissite
facilmente. -
Não é obrigatório separar os arquivos de log (isso é mostrado no exemplo). Esta é apenas outra ideia.
-
Na pergunta está escrito
ServerAdmin admin.example.com
, você deve fornecer e-mail com esta diretiva.