O que é um servidor web?
Um Web Server é um software (e o hardware em execução) que aceita solicitações HTTP/HTTPS de clientes e fornece conteúdo web, incluindo páginas HTML, imagens, folhas de estilo, scripts e respostas API.
Como funcionam os servidores Web
HTTP Request/Response Cycle:
Client (Browser) Web Server
│ │
│──── HTTP Request ──────────►│
│ GET /index.html │
│ Host: example.com │
│ │
│ Process Request
│ ├── Parse URL
│ ├── Check permissions
│ ├── Locate resource
│ └── Prepare response
│ │
│◄─── HTTP Response ──────────│
│ 200 OK │
│ Content-Type: text/html │
│ <html>...</html> │
│ │
Software de servidor web popular
| Servidor | Parte de mercado | Melhor para |
|---|---|---|
| nginx | ~ 34% | Alta concordância, proxy reverso |
| Apache | ~ 31% | Flexibilidade, .htaccess |
| Cloudflare | ~21% | CDN, computação de bordas |
| LiteSpeed | ~12% | Hospedagem WordPress |
| IIS | ~6% | Ambientes Windows/.NET |
Funções do Servidor Web
| Função | Designação das mercadorias |
|---|---|
| Servidor de arquivo estático | HTML, CSS, JS, imagens |
| Terminação TLS/SSL | Criptografia HTTPS |
| Proxy inverso | Encaminhar para os servidores de infraestrutura |
| Balanceamento de carga | Distribuir o tráfego |
| Cache | Reduzir a carga da infra- estrutura |
| Compressão | Codificação Gzip/Brotli |
| Controlo de acesso | Autenticação, filtragem IP |
| Registo | Registos de pedidos/erros |
Exemplos de Configuração do Servidor
# nginx - Virtual host configuration
server {
listen 80;
listen 443 ssl;
server_name example.com;
root /var/www/example;
index index.html;
ssl_certificate /etc/ssl/cert.pem;
ssl_certificate_key /etc/ssl/key.pem;
location / {
try_files $uri $uri/ =404;
}
location /api {
proxy_pass http://localhost:3000;
}
}
# Apache - .htaccess example
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Enable compression
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
Arquitetura do Servidor Web
Modern Web Stack:
Internet
│
▼
┌─────────────┐
│ CDN/WAF │
└─────────────┘
│
▼
┌─────────────┐
│ Load Balancer│
└─────────────┘
│ │
┌─────┘ └─────┐
▼ ▼
┌───────────┐ ┌───────────┐
│ Web Server│ │ Web Server│
│ (nginx) │ │ (nginx) │
└───────────┘ └───────────┘
│ │
└────────┬────────┘
▼
┌─────────────┐
│ App Server │
│ (Node/Python)│
└─────────────┘
│
▼
┌─────────────┐
│ Database │
└─────────────┘
Identificação do Servidor
| Método de detecção | Informação Revelada |
|---|---|
| Cabeçalho do servidor | Nome/versão do software |
| Cabeçalhos de resposta | Pistas de pilha de tecnologia |
| Páginas de erro | Modelos de servidor padrão |
| Padrões de calendário | Comportamento específico do servidor |
| Extensões de ficheiro | Indicadores da plataforma |
Considerações sobre segurança
1. Esconder informações da versão: Remover a versão do servidor dos cabeçalhos
2. Desactivar a lista de pastas: Evitar a enumeração de ficheiros
3. Configure o TLS corretamente: Protocolos modernos, cifras fortes
4. Tamanhos de pedido de limitação: Prevenir ataques doS
5. Set headers de segurança: CSP, HSTS, X-Frame-Options
6. Atualizações regulares: Correcção rápida das vulnerabilidades
Otimização de desempenho
| Técnica | Benefício |
|---|---|
| Manter vivo | Reutilizar conexões |
| Gzip/Brotli | Respostas menores |
| Cache estático | Reduzir o E/S do disco |
| Afinação do trabalhador | Lidar com mais usuários simultâneos |
| HTTP/2 | Pedidos multiplexados |
Melhores Práticas
1. Escolha baseado em necessidades: nginx para proxy, Apache para flexibilidade
2. Separar estática/dinâmica: CDN para estática, servidor para dinâmica
3. Monitor resources: CPU, memória, conexões
4. Implementar cache: Navegador, proxy e servidor
5. Configure loging: Registos estruturados para análise
6. Plano para escala: Balanceamento de carga, escala horizontal
Os servidores web são a base da infraestrutura web, lidando com a tarefa crítica de entregar conteúdo aos usuários de forma confiável e eficiente.