Como Hospedar Múltiplos Sites no Mesmo Ubuntu Server com Nginx e Virtual Hosts
Aprenda a estruturar um servidor Linux para receber vários domínios diferentes usando blocos de servidor, roteamento de tráfego e isolamento seguro.
Resumo
- O uso de blocos de servidor no Nginx resolve o problema de direcionar requisições de diferentes domínios para pastas distintas no disco.
- Configurar registros DNS do tipo A e CNAME corretamente garante que o tráfego da internet chegue ao IP público correto do servidor.
- O isolamento de permissões de arquivos evita que falhas de segurança em uma aplicação comprometam os demais sites hospedados.
- A emissão de certificados SSL gratuitos via Let's Encrypt protege o tráfego de todos os domínios de forma independente.
- Monitorar o uso de recursos do sistema evita que um site com muito tráfego prejudique o desempenho dos vizinhos no mesmo servidor.
O Desafio de Centralizar Várias Aplicações em uma Única Máquina
Quando começamos a criar projetos na internet, o caminho mais comum é contratar uma máquina virtual barata na nuvem para cada site que colocamos no ar. Na prática, isso significa desperdiçar dinheiro e poder de processamento, já que um site institucional simples consome apenas uma fração minúscula da capacidade de um processador moderno. A solução para esse desperdício é o uso de um único servidor executando múltiplos domínios simultaneamente, dividindo os custos de infraestrutura e simplificando a manutenção. No entanto, surge o problema de engenharia: como fazer com que o servidor entenda que uma requisição vinda do siteA.com.br deve abrir arquivos completamente diferentes de uma requisição para o siteB.com.br?
Para resolver esse quebra-cabeça, utilizamos um software chamado servidor web reverso, sendo o Nginx uma das escolhas mais populares e eficientes do mercado atual. Na prática, o Nginx funciona como um porteiro inteligente na porta de entrada do seu Ubuntu Server, olhando o endereço digitado pelo usuário no navegador e encaminhando o pedido para o andar correto. Esse mecanismo é conhecido tecnicamente como Virtual Hosting ou blocos de servidor. Sem ele, o servidor ficaria perdido, exibindo sempre a mesma página inicial para qualquer endereço que batesse na sua porta.
Preparando o Terreno e Instalando o Servidor Web
Antes de configurar os domínios, precisamos garantir que o sistema operacional esteja limpo, atualizado e com a ferramenta de atendimento web devidamente instalada. O Ubuntu Server oferece um gerenciador de pacotes chamado APT, que funciona como uma loja de aplicativos oficial do sistema via linha de comando. O primeiro passo prático consiste em atualizar a lista de pacotes locais digitando sudo apt update && sudo apt upgrade -y no terminal. Em seguida, instalamos o Nginx com o comando sudo apt install nginx -y. Essa etapa baixa os arquivos essenciais e inicia o serviço em segundo plano, garantindo que o servidor já esteja respondendo a requisições básicas na porta padrão da web.
Após a instalação, vale a pena verificar se o firewall do sistema, conhecido como UFW, está configurado para permitir o tráfego de internet. Na prática, o firewall atua como um segurança na porta da boate, decidindo quem entra e quem fica de fora. Liberamos as regras de rede digitando sudo ufw allow 'Nginx Full', o que garante que tanto conexões comuns quanto conexões seguras possam passar. Se você abrir o endereço IP numérico do seu servidor no navegador agora, verá a página padrão de boas-vindas do Nginx, indicando que o motor principal já está roncando e pronto para receber instruções mais avançadas.
Organizando a Estrutura de Pastas para Cada Domínio
Um erro comum de iniciantes é jogar os arquivos de todos os sites dentro da pasta padrão que o Nginx cria automaticamente, misturando códigos e criando brechas de segurança. A engenharia por trás de um ambiente robusto exige isolamento rigoroso, criando uma estrutura de diretórios dedicada para cada projeto dentro do diretório padrão de páginas web do Linux. Para o nosso primeiro site, criamos a pasta /var/www/siteum.com/html, e para o segundo site, a pasta /var/www/sitedois.com/html. Usamos o comando sudo mkdir -p para garantir que todas as pastas intermediárias sejam criadas de uma só vez sem reclamações do sistema operacional.
Além de criar as pastas, precisamos garantir que o usuário do sistema que executa o Nginx tenha permissão para ler esses arquivos, mas sem que usuários mal intencionados consigam invadir o sistema. Na prática, ajustamos a propriedade das pastas usando o comando sudo chown -R $USER:$USER /var/www/siteum.com/html, o que dá o controle ao seu usuário atual durante o desenvolvimento. Também ajustamos as permissões de leitura com sudo chmod -R 755 /var/www, garantindo que o mundo externo possa ler o conteúdo dos sites, mas apenas o administrador possa alterá-los. Para testar se tudo funciona, criamos um arquivo de teste simples chamado index.html dentro de cada pasta com uma mensagem identificando qual site é aquele.
Configurando os Blocos de Servidor no Nginx
A alma da hospedagem múltipla reside nos arquivos de configuração do Nginx, localizados na pasta /etc/nginx/sites-available/. Cada domínio deve ter seu próprio arquivo de configuração isolado, descrevendo exatamente como o servidor deve se comportar quando receber uma requisição para aquele endereço específico. Criamos um arquivo chamado siteum.com para o primeiro projeto e preenchemos com diretrizes claras que informam ao Nginx onde estão os arquivos no disco e qual é o nome do domínio correspondente. Essa separação evita o efeito cascata, onde um erro de digitação em um site derruba o servidor inteiro.
Dentro desse arquivo de configuração, definimos blocos de código chamados server. Um exemplo prático da estrutura essencial é o seguinte bloco básico:
server {
listen 80;
server_name siteum.com www.siteum.com;
root /var/www/siteum.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}Na prática, essa instrução diz ao Nginx para escutar a porta 80 (tráfego comum sem criptografia) quando alguém digitar siteum.com, buscar os arquivos dentro da pasta que criamos e entregar a página inicial solicitada. Repetimos o processo para o segundo site, criando um arquivo separado para ele. Para ativar essas configurações, criamos links simbólicos — que funcionam como atalhos inteligentes — apontando para a pasta /etc/nginx/sites-enabled/. Antes de reiniciar o servidor, executamos o comando de teste sudo nginx -t para validar se não há erros de sintaxe, evitando quedas indesejadas em produção.
Apontando o DNS e Blindando com Certificados de Segurança
Com o servidor configurado e rodando, o próximo passo é garantir que os domínios comprados em registros externos saibam onde encontrar o seu Ubuntu Server. Na prática, você acessa o painel do seu registrador de domínios e cria registros do tipo A apontando o nome do seu site para o endereço IP público da sua máquina na nuvem. Quando um usuário digita o endereço no navegador, o sistema mundial de nomes de domínio traduz isso para o seu IP, fazendo com que o tráfego chegue exatamente no Nginx que configuramos nas etapas anteriores. Esse processo de propagação pode levar alguns minutos para se espalhar globalmente.
O passo final obrigatório para qualquer site moderno é a instalação de certificados SSL, que transformam o protocolo HTTP em HTTPS, exibindo o famoso cadeado verde de segurança no navegador. Sem isso, os navegadores modernos bloqueiam o acesso e exibem alertas assustadores para os visitantes. Utilizamos uma ferramenta automatizada chamada Certbot, instalada via gerenciador de pacotes, que conversa diretamente com a autoridade certificadora Let's Encrypt. Executando o comando sudo certbot --nginx, o sistema detecta automaticamente todos os blocos de servidor configurados no Nginx, gera os certificados gratuitos e até mesmo configura a renovação automática em segundo plano, garantindo que seus múltiplos sites permaneçam seguros e funcionais por tempo indeterminado.
Considerações Finais e Manutenção Contínua
Hospedar múltiplos sites no mesmo Ubuntu Server é uma excelente estratégia de otimização de recursos, mas exige disciplina na organização e no monitoramento diário. Ao isolar pastas, estruturar blocos de servidor limpos e automatizar a renovação de certificados SSL, você constrói um ambiente profissional comparável ao de grandes agências de hospedagem. A manutenção passa a ser uma rotina de observar logs de erro do Nginx e garantir que atualizações de segurança do sistema operacional não interfiram nas configurações de rede. Com essa base sólida, escalar para cinco, dez ou vinte sites na mesma máquina deixa de ser um risco técnico e passa a ser uma operação controlada e altamente eficiente.