Como hospedar vários sites em um único VPS
Um único VPS bem configurado pode hospedar dezenas de sites. O segredo está em isolar cada um para que um problema em um site não afete os outros.
O conceito: virtual hosts
O servidor web usa o nome do domínio requisitado (cabeçalho Host) para decidir qual site entregar. Todos os domínios apontam para o mesmo IP, e cada um tem sua própria configuração.
Estrutura recomendada
Para cada site:
- Um usuário do sistema próprio;
- Uma pasta própria;
- Um pool PHP-FPM rodando com esse usuário;
- Um banco de dados e usuário de banco próprios;
- Um certificado SSL.
1. Crie o usuário e a pasta
sudo useradd -m -d /var/www/site1 -s /usr/sbin/nologin site1
sudo mkdir -p /var/www/site1/public
sudo chown -R site1:site1 /var/www/site1
sudo chmod 750 /var/www/site1
sudo usermod -aG site1 www-data # permite ao Nginx ler os arquivos
2. Crie um pool PHP-FPM dedicado
/etc/php/8.3/fpm/pool.d/site1.conf (ajuste a versão):
[site1]
user = site1
group = site1
listen = /run/php/site1.sock
listen.owner = www-data
listen.group = www-data
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 30s
php_admin_value[open_basedir] = /var/www/site1:/tmp
php_admin_value[upload_max_filesize] = 64M
php_admin_value[post_max_size] = 64M
O modo ondemand é ótimo para muitos sites com pouco tráfego: processos só são criados quando há requisições.
sudo systemctl restart php8.3-fpm
3. Configure o Nginx
/etc/nginx/sites-available/site1.com.br:
server {
listen 80;
server_name site1.com.br www.site1.com.br;
root /var/www/site1/public;
index index.php index.html;
access_log /var/log/nginx/site1.access.log;
error_log /var/log/nginx/site1.error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/site1.sock;
}
}
sudo ln -s /etc/nginx/sites-available/site1.com.br /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
4. Banco de dados
CREATE DATABASE site1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site1'@'localhost' IDENTIFIED BY 'SENHA_FORTE';
GRANT ALL PRIVILEGES ON site1.* TO 'site1'@'localhost';
5. SSL
sudo certbot --nginx -d site1.com.br -d www.site1.com.br
Repita os passos para site2, site3...
Bloqueando acessos pelo IP
Evite que o primeiro site responda a requisições para domínios desconhecidos ou pelo IP:
server {
listen 80 default_server;
server_name _;
return 444;
}
Prefere uma interface gráfica?
Painéis como HestiaCP, CloudPanel, CyberPanel e aaPanel automatizam tudo isso: criação de usuários, pools, bancos e SSL com poucos cliques.
Dicas de gestão
- Backups por site, facilitando restaurações individuais;
- Monitore o consumo de cada pool (
htopfiltrando por usuário); - Logs separados por site facilitam diagnósticos;
- Dimensione o VPS pela soma dos picos, com folga.
Conclusão
Consolidar sites em um VPS reduz custos e simplifica a gestão — desde que cada site esteja isolado. Com um VPS-NVME-BR da VittHost, todos os seus sites ganham NVMe e servidores no Brasil.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.