Configuração de virtual hosts
1. O que são hosts virtuais?
Imagina que você abre um café aconchegante. A maioria dos clientes vem pra tomar café ☕, mas de vez em quando aparece alguém pedindo chá 🍵. Ao invés de abrir um lugar separado só pros fãs de chá, você simplesmente reservou um cantinho ali no café pra eles. No mundo dos servidores web, essa ideia é chamada de hosts virtuais. Eles permitem que seu servidor administre vários sites (com domínios diferentes), mantendo apenas um servidor físico.
Tipos de hosts virtuais
- Baseados em IP — cada site recebe seu próprio IP exclusivo. É como uma área VIP num show: cada cliente com ingresso VIP tem seu lugar garantido.
- Baseados em nomes de domínio — vários sites podem compartilhar um único IP. Aqui o servidor usa o nome do host (nome de domínio) vindo da requisição do cliente pra entender qual site ele quer acessar. Esse é o método mais comum e prático pra maioria dos projetos.
2. Configurando um host virtual no Nginx
1. Criando um novo host virtual
Para configurar um host virtual, primeiro é necessário criar um arquivo de configuração. Esse arquivo vai conter informações sobre como o servidor deve processar as requisições para um domínio específico.
Vamos criar o arquivo pro nosso site, por exemplo example.com
:
sudo nano /etc/nginx/sites-available/example.com
Adicionamos o seguinte bloco de configuração:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Vamos detalhar o código:
listen 80;
: Indica que o servidor vai escutar a porta 80 (por padrão usada para HTTP).server_name example.com www.example.com;
: Define para quais nomes de domínio o servidor deve responder.root /var/www/example.com;
: A diretiva define a pasta raiz onde os arquivos do site estão localizados.index index.html;
: Define o arquivo que será usado como a "página inicial" do site.location / { try_files $uri $uri/ =404; }
: Configuração de roteamento de requisições. Se o arquivo ou diretório não for encontrado, retorna erro 404.
2. Ativando a configuração
Agora precisamos "ativar" o nosso host virtual. No Nginx isso é feito através de links simbólicos:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Depois verificamos pra garantir que não há erros na configuração:
sudo nginx -t
Se estiver tudo certo, reiniciamos o servidor:
sudo systemctl reload nginx
3. Verificando o funcionamento
Criamos a pasta pros arquivos do site:
sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html
Adicionamos o seguinte código HTML simples:
<h1>Bem-vindo ao example.com!</h1>
<p>Seu servidor Nginx está pronto para trabalhar.</p>
Salvamos o arquivo, depois abrimos no navegador: http://example.com
. Se vermos a mensagem de boas-vindas, significa que o host virtual está funcionando!
4. Links simbólicos no Linux
Links simbólicos (ou soft links, symlinks) são objetos de arquivo especiais que apontam para outro arquivo ou diretório. Eles funcionam como "atalhos" no Windows, permitindo acessar o arquivo ou pasta alvo por meio de um caminho alternativo.
Os links simbólicos contêm o caminho pro objeto original, não o próprio objeto. Se o arquivo ou pasta original for movido ou deletado, o link se torna "quebrado", já que ele não aponta mais pra um objeto existente.
Comando para criar um link simbólico:
ln -s target link_name
target
— caminho pro objeto original.link_name
— nome do link.
Exemplo:
ln -s /var/log/syslog log_link
Agora, pelo log_link
, podemos acessar o arquivo /var/log/syslog
.
Aplicações:
- Simplificar a navegação.
- Criar pontos de acesso alternativos para arquivos.
- Organizar diretórios.
3. Configurando um host virtual no Apache
1. Criando o arquivo de configuração
O Apache usa uma abordagem diferente. Aqui, as configurações para hosts virtuais ficam na pasta /etc/apache2/sites-available/
. Criamos um arquivo para o nosso site:
sudo nano /etc/apache2/sites-available/example.com.conf
Adicionamos o seguinte código:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Explicação rápida:
<VirtualHost *:80>
: Indica que a configuração se aplica a todas as requisições na porta 80.ServerName
eServerAlias
: Definem o domínio principal e os domínios adicionais do site.DocumentRoot
: Especifica a pasta raiz do site.<Directory>
: Bloco que define os direitos de acesso e o comportamento para o diretório especificado.
2. Ativando a configuração
Para ativar a configuração, usamos o comando:
sudo a2ensite example.com.conf
Reinicie o servidor para aplicar as mudanças:
sudo systemctl restart apache2
3. Verificando o funcionamento
Mais uma vez, criamos a pasta e um arquivo para o site:
sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html
Preenchemos com este conteúdo:
<h1>Bem-vindo ao example.com no Apache!</h1>
Salve e abra no navegador: http://example.com
. Se você ver a página de boas-vindas — parabéns, você configurou um host virtual no Apache!
4. Verificação e gerenciamento de múltiplos hosts
Configuração do segundo virtual host
Vamos supor que você queira hospedar um segundo site: test.com
. O processo é o mesmo:
- Crie um novo arquivo de configuração.
- Indique um nome de domínio único e uma pasta raiz.
- Ative a configuração e reinicie o servidor.
Para Nginx:
sudo nano /etc/nginx/sites-available/test.com
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx
Para Apache:
sudo nano /etc/apache2/sites-available/test.com.conf
sudo a2ensite test.com.conf
sudo systemctl restart apache2
Depuração de problemas
Se os seus virtual hosts não estão funcionando, comece verificando os erros. Por exemplo:
Para Nginx:
sudo tail -f /var/log/nginx/error.log
Para Apache:
sudo tail -f /var/log/apache2/error.log
Também é possível usar o comando curl
para testar o site diretamente:
curl -I http://example.com
Agora você pode configurar virtual hosts e hospedar múltiplos sites em um único servidor. Junto com isso, vem a configuração de HTTPS para tornar seus sites mais seguros. Mas isso já é assunto para a próxima aula!
GO TO FULL VERSION