04 - Servidor Web
video: https://youtu.be/... no frontmatter da nota.Servidor Web
O Servidor Web (Web Server) é o componente central da inteligência e do armazenamento no ecossistema HTTP. Trata-se do computador ou processo de software (Servidor de Origem) responsável por hospedar os recursos digitais (HTML, imagens, vídeos, scripts) e entregá-los de forma eficiente e segura aos Clientes Web em todo o mundo. Operando sob o modelo Request-Response, o servidor web é a entidade técnica que interpreta as intenções do usuário e as traduz em acessos a arquivos físicos ou execuções de lógica de backend.
1. Arquitetura de Processamento do Servidor
Diferentes servidores web adotam filosofias distintas para lidar com a carga massiva de milhões de usuários simultâneos.
- Process-Based (Baseado em Processos): Como o Apache (MPM Prefork). Cada nova conexão gera um novo processo ou thread. É estável e isolado, mas pesado em termos de consumo de memória RAM (cada worker ocupa ~5–8 MB).
- Thread-Based (Baseado em Threads): Como o Apache (MPM Worker). Cada conexão consome uma thread, mais leve que um processo (~1–2 MB). Suporta milhares de conexões simultâneas por máquina.
- Event-Driven (Baseado em Eventos): Como o Nginx e o NodeJS. Utiliza um loop de eventos único para gerenciar milhares de conexões simultaneamente com baixíssimo consumo de recursos (cerca de 100 KB por conexão ociosa). É a escolha ideal para conteúdos estáticos e proxies reversos de alta performance.
Comparativo de Modelos de Concorrência
| Modelo | RAM por Conexão | Conexões por Núcleo | Latência sob Carga | Exemplos |
|---|---|---|---|---|
| Process | 5–8 MB | 100–200 | Alta | Apache Prefork |
| Thread | 1–2 MB | 1.000–2.000 | Média | Apache Worker, IIS |
| Event | 100 KB | 10.000–100.000 | Baixa | Nginx, Node.js, Caddy |
2. Conteúdo Estático vs Dinâmico
O servidor web atua como um coordenador de diferentes fluxos de dados.
- Serviço Estático: O servidor simplesmente localiza um arquivo no disco rígido e o envia diretamente via HTTP. É extremamente rápido e eficiente em termos de caching, sendo otimizado por técnicas como sendfile (cópia direta via syscall do kernel, evitando cópias para o userspace) e mmap (mapeamento do arquivo na memória virtual).
- Serviço Dinâmico: O servidor delega a requisição para um motor de execução (ex: PHP-FPM, Python/Django, Ruby on Rails, Node.js) através de protocolos como o FastCGI ou SCGI. O conteúdo é gerado em tempo real, frequentemente interagindo com bancos de dados, antes de ser encapsulado em uma resposta HTTP.
Ciclo de Vida de uma Requisição Dinâmica
Cliente → Reverse Proxy (Nginx) → FastCGI → PHP-FPM Worker → MySQL
← (gzip, cache) ← ← ←
Em stack modernas (ex.: Node.js), o servidor web é o próprio processo de aplicação, eliminando a camada FastCGI mas exigindo que a aplicação cuide do gerenciamento de conexões e cache.
3. Hospedagem Virtual (Virtual Hosting)
Uma das maiores inovações técnicas do servidor web foi a capacidade de hospedar milhares de sites diferentes em um único endereço IP físico.
- Name-Based Virtual Hosting: O servidor utiliza o cabeçalho
Hostda requisição HTTP/1.1 para decidir em qual diretória (VirtualHost) deve procurar o arquivo, permitindo uma economia massiva de endereços IPv4. - IP-Based Virtual Hosting: Cada site recebe um IP distinto. Necessário para TLS com certificados legados (pré-SNI) e para alguns casos regulatórios.
- Port-Based Virtual Hosting: Diferentes sites em diferentes portas TCP na mesma máquina. Raramente usado em produção.
Exemplo Apache (Name-Based)
<VirtualHost *:80>
ServerName www.site1.com.br
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.com.br
DocumentRoot /var/www/site2
</VirtualHost>
Exemplo Nginx
server {
listen 80;
server_name www.site1.com.br;
root /var/www/site1;
}
server {
listen 80;
server_name www.site2.com.br;
root /var/www/site2;
}
4. Perspectiva de Cyber Security: Protegendo o Núcleo
O servidor web é a porta de entrada para a rede corporativa e, por isso, deve ser rigorosamente protegido através de técnicas de Hardening.
Vazamento de Informações (Banner Grabbing)
Por padrão, muitos servidores expõem sua versão exata (ex: Apache/2.4.41) no cabeçalho Server. Atacantes utilizam isso para buscar exploits específicos. A desativação desses metadados é o primeiro passo para a segurança.
- Apache:
ServerTokens ProdeServerSignature Offnohttpd.conf. - Nginx:
server_tokens off;nonginx.conf.
Ataques de Negação de Serviço (DoS/DDoS)
Servidores web são vulneráveis a ataques de exaustão de conexões (ex: Slowloris), onde o atacante abre milhares de conexões e envia dados de forma extremamente lenta, ocupando todos os slots do servidor e impedindo o acesso de usuários legítimos. A mitigação exige o uso de Reverse Proxies e limites de tempo de espera (Timeout) rigorosos.
Directory Traversal (Travessia de Diretório)
Uma vulnerabilidade onde o atacante tenta acessar arquivos fora do diretório raiz do site (ex: GET /../../etc/passwd). Configurações de permissões em nível de sistema operacional (como chroot) e ACLs no servidor web são vitais para mitigar este risco.
OWASP Top 10 e Servidor Web
| Vulnerabilidade OWASP | Mitigação no Servidor Web |
|---|---|
| Injection (SQLi, XSS) | WAF (ModSecurity), validação |
| Broken Authentication | Headers HSTS, cookies HttpOnly |
| Sensitive Data Exposure | TLS 1.3, perfect forward secrecy |
| XXE | Desabilitar entidade externa XML |
| Broken Access Control | Chroot, ACLs, SELinux |
5. Módulos e Extensões
Servidores web modernos são modulares, permitindo adicionar funcionalidades sem recompilar:
Apache HTTP Server
- mod_ssl: TLS/SSL.
- mod_rewrite: reescrita de URLs (essencial para WordPress).
- mod_security: Web Application Firewall.
- mod_deflate: compressão gzip.
- mod_cache / mod_disk_cache: cache de respostas.
- mod_evasive: mitigação básica de DDoS.
Nginx
- Nginx é mais rígido: módulos devem ser compilados estaticamente ou via módulos dinâmicos (desde 1.9.11).
- Módulos comuns:
ngx_http_ssl_module,ngx_http_v2_module,ngx_http_v3_module(HTTP/3).
IIS (Microsoft)
- Extensões via Web Platform Installer.
- URL Rewrite Module, Application Request Routing (ARR).
6. Auditoria Técnica e Diagnóstico de Servidor
Validar a saúde e a configuração do servidor web é uma tarefa de rotina crítica:
# Verificando a presenca do cabecalho Server (Auditoria de Hardening)
curl -I https://www.meuservidor.com
# Testando a performance do servidor sob carga simulada
ab -n 1000 -c 10 http://www.meuservidor.com/index.html (Apache Benchmark)
# Testando com wrk (mais realista para alta concorrência)
wrk -t12 -c400 -d30s http://www.meuservidor.com/
# Verificando erros internos e acessos via logs (Standard Log Analysis)
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
# Estatisticas em tempo real com nginx_status
curl http://localhost/nginx_status
Métricas Essenciais de Observabilidade
| Métrica | Significado | Alerta se |
|---|---|---|
| Requests per second (RPS) | Throughput do servidor | Queda > 50% |
| Response time p50, p95, p99 | Latência | p95 > 500 ms |
| Error rate (5xx) | % de erros de servidor | > 1% |
| Active connections | Conexões simultâneas | Próximo do limite worker |
| CPU / RAM do processo | Recursos consumidos | > 80% sustentado |
7. O Papel do Proxy Reverso e Balanceamento de Carga
Em infraestruturas modernas, o servidor web "real" raramente lida diretamente com a Internet.
- Terminação SSL: O proxy recebe o tráfego HTTPS (Porta 443), decifra e encaminha o tráfego limpo para o servidor de origem na rede interna, economizando CPU nos servidores de aplicação.
- Load Balancing: Distribui as requisições entre uma fazenda de servidores (Server Farm), garantindo que nenhum servidor individual seja sobrecarregado.
- Cache: O proxy pode armazenar respostas cacheáveis (ex.: imagens estáticas) e responder diretamente, sem consultar o backend.
- Compression: Aplica gzip ou brotli na borda, reduzindo consumo de banda dos backends.
Algoritmos de Balanceamento
| Algoritmo | Funcionamento | Indicação |
|---|---|---|
| Round Robin | Distribuição circular | Backends homogêneos |
| Least Connections | Envia para quem tem menos conexões ativas | Backends heterogêneos |
| IP Hash | Mesmo cliente sempre vai para o mesmo backend | Sticky sessions |
| Random | Escolha aleatória | Distribuição simples |
| Weighted | Pesos por capacidade | Backends com CPU distintas |
8. Conclusão: O Guardião dos Recursos
O Servidor Web é o guardião final da presença digital de qualquer organização. De sua performance depende a velocidade da experiência do usuário, e de sua segurança depende a integridade dos dados da empresa. Compreender as diferenças arquiteturais entre Apache (process/thread) e Nginx (event-driven), gerenciar com precisão as permissões de diretório, implementar camadas de proxy reverso e CDN, e monitorar continuamente métricas de observabilidade são as bases para construir infraestruturas web resilientes, escaláveis e seguras no cenário dinâmico da internet global.