Gerador de VirtualHost Apache
Gera bloco <VirtualHost> Apache 2.4 com ServerName, DocumentRoot, ErrorLog e RewriteEngine. Modo HTTP ou HTTPS.
VirtualHost do Apache em profundidade: HTTPS, mod_rewrite, .htaccess, MPMs e módulos
Um bloco <VirtualHost> do Apache descreve um único site servido pelo processo httpd: em qual endereço e porta ele escuta, o document root, arquivos de log, configurações opcionais de TLS e permissões por diretório. Uma única instância do Apache pode servir centenas de domínios diferentes via name-based virtual hosting, alternando o contexto pelo cabeçalho Host da requisição (ou pelo SNI em HTTPS). Apesar da ascensão do nginx, o Apache continua sendo o servidor web mais implantado em hospedagens compartilhadas e dentro de empresas, graças ao ecossistema de módulos e à flexibilidade por diretório do .htaccess.
Este gerador emite um bloco mínimo mas com formato de produção; as seções abaixo cobrem a sintaxe em detalhe, como habilitar HTTPS com Let's Encrypt, regras de rewrite, os trade-offs do .htaccess, os três MPMs principais (prefork/worker/event), módulos úteis, convenções de arquivos por distribuição e como o Apache se compara com o nginx.
Sintaxe básica
<VirtualHost *:80>
ServerName exemplo.com
ServerAlias www.exemplo.com
DocumentRoot /var/www/exemplo.com/public
ErrorLog ${APACHE_LOG_DIR}/exemplo.com_error.log
CustomLog ${APACHE_LOG_DIR}/exemplo.com_access.log combined
<Directory /var/www/exemplo.com/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
ServerName é o host canônico; ServerAlias adiciona nomes extras. AllowOverride All permite que arquivos .htaccess sobrescrevam configurações por diretório; em produção, restrinja a diretivas específicas por performance. Require all granted é o substituto no Apache 2.4 para o antigo Order allow,deny / Allow from all.
HTTPS com Let's Encrypt
<VirtualHost *:443>
ServerName exemplo.com
DocumentRoot /var/www/exemplo.com/public
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/exemplo.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/exemplo.com/privkey.pem
SSLProtocol -all +TLSv1.2 +TLSv1.3
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</VirtualHost>
Rode sudo certbot --apache -d exemplo.com -d www.exemplo.com para provisionar o certificado; o certbot edita o VirtualHost e instala um timer de renovação.
mod_rewrite: forçar HTTPS e URLs amigáveis
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Front controller (frameworks PHP)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
[L] interrompe o processamento das próximas regras na mesma passada; [R=301] emite redirect permanente. Teste rewrites no staging — erros podem gerar loops infinitos que o mod_rewrite acaba quebrando com um 500.
.htaccess vs config central
Arquivos .htaccess aplicam diretivas por diretório e são lidos em toda requisição, por todos os diretórios pais até o DocumentRoot. São convenientes em hospedagem compartilhada, onde o usuário não pode editar o config principal, mas custam performance: cada caminho percorrido gera uma chamada stat. Em seu próprio servidor, prefira AllowOverride None globalmente e mova as regras para dentro de <Directory> no config principal. As diretivas aceitas dependem das classes de AllowOverride: AuthConfig, FileInfo, Indexes, Limit, Options.
MPMs: prefork, worker, event
- prefork — um processo por requisição, sem threads. Exigido pelo antigo
mod_phpporque o PHP não é thread-safe. É o mais lento e o que mais consome memória. - worker — multi-threaded, menos processos. Suporta de 2 a 4x mais conexões simultâneas por GB de RAM que o prefork.
- event — padrão desde a 2.4; igual ao worker mais threads dedicadas para conexões
keep-aliveociosas. A melhor escolha, a menos que algum módulo específico force prefork.
Para PHP, rode php-fpm através de mod_proxy_fcgi em vez de mod_php — você ganha o MPM event e o mesmo isolamento de um nginx + PHP-FPM.
Módulos úteis
mod_rewrite— reescrita de URLs e redirecionamentos condicionais.mod_ssl— terminação TLS.mod_headers— adicionar, anexar ou remover headers de resposta (HSTS, CSP, CORS).mod_proxy,mod_proxy_http,mod_proxy_balancer— reverse proxy e balanceamento.mod_security— Web Application Firewall (WAF) com o OWASP Core Rule Set.mod_status,mod_cache,mod_deflate— observabilidade, cache de resposta e compressão gzip.
Layout de arquivos e reload
No Debian e Ubuntu, coloque cada VirtualHost em /etc/apache2/sites-available/<nome>.conf e ative com sudo a2ensite <nome> (que cria um symlink em sites-enabled). No RHEL, Fedora e Alpine, os arquivos ficam direto em /etc/httpd/conf.d/. Sempre teste antes de recarregar:
sudo apachectl configtest # equivalente a apache2ctl -t
sudo systemctl reload apache2 # Debian/Ubuntu
sudo systemctl reload httpd # RHEL/Fedora
FAQ
O .htaccess prejudica a performance? Sim — toda requisição dispara uma busca por diretório. Desative em produção com AllowOverride None no DocumentRoot principal; em hospedagem compartilhada onde você não pode editar o config principal, mantenha.
Como conseguir HTTPS rapidamente? Apache 2.4 + Let's Encrypt: sudo apt install certbot python3-certbot-apache e depois sudo certbot --apache. Edita o VirtualHost e instala um cert de 90 dias com renovação automática.
O Apache suporta HTTP/2? Sim, desde 2.4.17 via mod_http2. Adicione Protocols h2 http/1.1 ao VirtualHost HTTPS. HTTP/3 (QUIC) ainda é experimental na 2.4.x — a maioria dos times coloca nginx ou um CDN na frente para QUIC.
Apache vs nginx? Apache se destaca na configurabilidade por diretório e na riqueza de módulos (especialmente mod_security para WAF). nginx vence em concorrência crua e throughput de arquivos estáticos. É comum um híbrido onde o nginx termina TLS e faz proxy para o Apache.
Meu VirtualHost está sendo ignorado — por quê? O primeiro bloco no primeiro config é o default implícito. Verifique que Listen 80 bate com o *:80 do seu bloco, que NameVirtualHost não está duplicando a diretiva (legado, removida na 2.4) e que o ServerName casa com o Host que você está enviando.
Ferramentas Relacionadas
Gerador .htpasswd Multi-Algoritmo
Monta o arquivo .htpasswd inteiro, com vários usuários de uma vez, em bcrypt, APR1-MD5, SHA-256/512 crypt ou SHA-1. Os algoritmos são os de verdade e o cálculo é local.
Gerador de RewriteRule (.htaccess)
Gera regras RewriteRule (mod_rewrite) para .htaccess. Inclui flag [L,R=301,QSA] e suporte a regex com grupos de captura.
Gerador de Redirect (.htaccess)
Gera regras de redirecionamento Apache para .htaccess com redirect 301 (permanente) ou 302 (temporário). Suporta múltiplas regras.
Gerador de Licença Apache 2.0
Gere o texto da licença Apache 2.0 com o seu copyright para o seu projeto open source. Copie o arquivo LICENSE pronto — permissiva e com proteção de patentes.
Gerador de Redirect (Nginx)
Gera regras de redirecionamento Nginx (return 301/302) para uso em location blocks. Aceita lista de pares "origem destino".
Gerador de Atestado Médico (mockup)
Gera texto de atestado médico fictício para afastamento. Inclui paciente, CID 10 simbólico, médico, dias de afastamento. APENAS MOCKUP.