Conjunto completo de scripts para instalaΓ§Γ£o e otimizaΓ§Γ£o de WordPress com Nginx e PHP-FPM, incluindo seguranΓ§a avanΓ§ada, cache em RAM e tuning de performance.
- MΓΊltiplos sites no mesmo servidor: Cada domΓnio possui seu prΓ³prio diretΓ³rio e configuraΓ§Γ£o
- DetecΓ§Γ£o automΓ‘tica de SSL baseada na URL fornecida
- Suporte para diferentes versΓ΅es do PHP (8.1, 8.2, 8.3, 8.4)
- Pool PHP dedicado para Γ‘rea administrativa com limites de recursos ampliados
- Sistema de templates Mustache para configuraΓ§Γ΅es dinΓ’micas
- FastCGI Cache em RAM (
/dev/shm) - Cache de pΓ‘ginas para mΓ‘xima velocidade - DragonflyDB Object Cache - 25x mais rΓ‘pido que Redis, multi-threaded
- Network Performance Tuning - OtimizaΓ§Γ΅es baseadas em "Extreme HTTP Performance Tuning"
- Sysctl otimizado - Mais de 100 parΓ’metros de kernel ajustados (TCP BBR, buffers, swappiness, etc.)
- Busy Polling - Reduz latΓͺncia em ~5-10%
- WAF (Web Application Firewall) - Regras extensivas de proteΓ§Γ£o
- ProteΓ§Γ£o contra HTTP Smuggling, XSS, SQL Injection
- Hardening de headers HTTP - Content-Type, User-Agent, Referer
- ProteΓ§Γ£o DDoS com rate limiting
- NFTables Firewall - Firewall moderno com rate limiting para SSH/ICMP
- 8G Firewall - Regras adicionais de seguranΓ§a
server-setup.sh- ConfiguraΓ§Γ£o inicial do servidorinstall-wordpress.sh- InstalaΓ§Γ£o de sites WordPressnginx-cache-manager.sh- Gerenciamento do cache FastCGInetwork-tuning.sh- OtimizaΓ§Γ΅es de rede avanΓ§adas
wordpress-nginx/
βββ server-setup.sh # ConfiguraΓ§Γ£o inicial do servidor
βββ install-wordpress.sh # InstalaΓ§Γ£o de sites WordPress
βββ nginx-cache-manager.sh # Gerenciamento do cache FastCGI
βββ network-tuning.sh # Tuning de performance de rede
βββ nftables.conf # ConfiguraΓ§Γ£o do firewall NFTables
βββ 50-perf.conf # ConfiguraΓ§Γ΅es sysctl otimizadas
βββ network-tuning.service # ServiΓ§o systemd para tuning de rede
βββ nginx-cache-dir.service # ServiΓ§o para criar diretΓ³rio de cache no boot
βββ nginx/
β βββ nginx.conf # ConfiguraΓ§Γ£o principal do Nginx
β βββ nginx.mustache # Template Nginx (sem cache)
β βββ nginx-cache.mustache # Template Nginx (com FastCGI cache)
β βββ snippets/
β βββ secure.conf # Regras de seguranΓ§a
β βββ secure-maps.conf # Maps de seguranΓ§a (WAF)
β βββ fastcgi-cache.conf # ConfiguraΓ§Γ£o do cache FastCGI
β βββ fastcgi-cache-location.conf # Diretivas de cache para location
β βββ fastcgi-php.conf # ConfiguraΓ§Γ£o FastCGI para PHP
β βββ ddos-protection.conf # ProteΓ§Γ£o contra DDoS
βββ php/
β βββ *.mustache # Templates de configuraΓ§Γ£o PHP-FPM
βββ mysql/
βββ *.mustache # Templates de configuraΓ§Γ£o MySQL/MariaDB
apt install git -y
git clone https://github.com/overdigo/wordpress-nginx
cd wordpress-nginxchmod +x server-setup.sh && ./server-setup.shEste script instalarΓ‘ e configurarΓ‘:
- Nginx (oficial ou compilado)
- MySQL ou MariaDB (configuraΓ§Γ£o otimizada por RAM)
- PHP-FPM (versΓ£o escolhida)
- Cache Server (DragonflyDB, Valkey ou Redis - vocΓͺ escolhe)
- Firewall NFTables
- Sysctl otimizado para performance
β οΈ Importante: Guarde a senha do MySQL root que serΓ‘ exibida ao final da instalaΓ§Γ£o.
chmod +x install-wordpress.sh && ./install-wordpress.shO script irΓ‘ perguntar:
- URL do site (ex:
https://meusite.com) - Email do administrador
- VersΓ£o do PHP
- Senha do MySQL root
- Habilitar FastCGI Cache (opcional - recomendado)
Cada site terΓ‘:
- DiretΓ³rio dedicado:
/var/www/dominio.com - Banco de dados dedicado
- ConfiguraΓ§Γ£o Nginx especΓfica
- SSL com certificado autoassinado (ou use Certbot depois)
- FastCGI Cache e Object Cache (se habilitado)
O FastCGI Cache armazena pΓ‘ginas em RAM (/dev/shm) para mΓ‘xima performance.
- Cache em RAM - LatΓͺncia mΓnima
- Bypass inteligente para:
- UsuΓ‘rios logados
- Carrinho/Checkout do WooCommerce
- PΓ‘ginas administrativas
- FormulΓ‘rios (POST requests)
- Preview de posts
# Ver status do cache
./nginx-cache-manager.sh status
# Limpar todo o cache
sudo ./nginx-cache-manager.sh purge
# Ver tamanho do cache
./nginx-cache-manager.sh size
# Monitorar cache em tempo real
./nginx-cache-manager.sh watchO script instala automaticamente o plugin Nginx Helper configurado para:
- Purge automΓ‘tico ao atualizar posts/pΓ‘ginas
- Purge ao atualizar menus/widgets
- Cache path:
/dev/shm/nginx-cache
O server-setup.sh permite escolher entre 3 opΓ§Γ΅es de cache server:
1. DragonflyDB β (RECOMENDADO)
- 25x mais rΓ‘pido que Redis
- 30% menos uso de RAM
- Multi-threaded (usa todos os cores)
- LatΓͺncia ~0.3ms
2. Valkey
- Fork open-source do Redis
- Performance igual ao Redis
- LicenΓ§a BSD (totalmente livre)
- LatΓͺncia ~1ms
3. Redis
- Mais maduro e estΓ‘vel
- Single-threaded
- LatΓͺncia ~1ms
- Amplamente testado
| MΓ©trica | Redis | DragonflyDB |
|---|---|---|
| Threading | Single-threaded | Multi-threaded |
| Performance | Baseline | 25x mais rΓ‘pido |
| Uso de RAM | Baseline | 30% menos |
| LatΓͺncia | ~1ms | ~0.3ms |
| Compatibilidade | 100% | 100% Redis API |
- Multi-threaded - Aproveita todos os cores da CPU
- Altamente otimizado - Menos uso de memΓ³ria
- 100% compatΓvel com Redis API
- Plugin redis-cache funciona normalmente
# Verificar status
systemctl status dragonfly
# Ver estatΓsticas em tempo real
redis-cli --stat
# Monitorar comandos
redis-cli MONITOR
# Ver informaΓ§Γ΅es de memΓ³ria
redis-cli INFO memory
# Reiniciar serviΓ§o
sudo systemctl restart dragonflyO plugin redis-cache Γ© instalado e configurado automaticamente quando o FastCGI Cache estΓ‘ habilitado.
# Aplicar firewall
sudo nft -f nftables.conf
# Ver regras ativas
sudo nft list rulesetRecursos:
- Policy DROP para input/forward
- Rate limiting para SSH (10/minuto)
- Rate limiting para ICMP (1/segundo)
- Suporte a HTTP/3 (QUIC - porta 443/UDP)
ProteΓ§Γ΅es incluΓdas em nginx/snippets/secure.conf e secure-maps.conf:
| Categoria | ProteΓ§Γ£o |
|---|---|
| Headers | User-Agent malicioso, Referer spam, Content-Type attacks |
| URL | Path traversal, SQL injection, XSS |
| Arquivos | Backup files, config files, PHP em uploads |
| WordPress | wp-config, xmlrpc, install.php, upgrade.php |
| HTTP | HTTP Smuggling, H2C Smuggling, Method tampering |
| Overflow | Cookie size, URI length, query parameters |
# Aplicar todas as otimizaΓ§Γ΅es de rede
sudo ./network-tuning.sh all
# Ou individualmente:
sudo ./network-tuning.sh irq # IRQ affinity
sudo ./network-tuning.sh xps # Transmit Packet Steering
sudo ./network-tuning.sh ring # Ring buffers
sudo ./network-tuning.sh status # Ver status atualO arquivo 50-perf.conf contΓ©m mais de 100 otimizaΓ§Γ΅es:
# Aplicar configuraΓ§Γ΅es
sudo cp 50-perf.conf /etc/sysctl.d/
sudo sysctl --systemPrincipais otimizaΓ§Γ΅es:
- TCP BBR congestion control
- Busy polling (reduz latΓͺncia 5-10%)
- Buffers otimizados (rmem, wmem)
- SYN cookies e proteΓ§Γ£o contra floods
- TCP FastOpen
- Swappiness reduzido
# Tuning de rede no boot
sudo cp network-tuning.service /etc/systemd/system/
sudo systemctl enable network-tuning
# Criar diretΓ³rio de cache no boot
sudo cp nginx-cache-dir.service /etc/systemd/system/
sudo systemctl enable nginx-cache-dirO projeto usa arquivos .mustache como templates. VariΓ‘veis disponΓveis:
| VariΓ‘vel | DescriΓ§Γ£o | Exemplo |
|---|---|---|
{{DOMAIN}} |
DomΓnio do site | meusite.com |
{{PHP_VERSION}} |
VersΓ£o do PHP | 8.4 |
{{PHP_VERSION_NO_DOT}} |
VersΓ£o sem ponto | 84 |
{{SITE_ROOT}} |
Caminho do site | /var/www/meusite.com |
bash <(wget -O - https://raw.githubusercontent.com/overdigo/wordpress-nginx/master/mysqltuner.sh)wget https://freevps.us/downloads/bench.sh -O - -o /dev/null|bashsudo nginx -tsudo systemctl restart nginx
sudo systemctl restart php8.4-fpm
sudo systemctl restart dragonfly
sudo systemctl restart mysql
sudo systemctl restart mariadb
# todos
sudo systemctl restart nginx php8.4-fpm dragonfly mysql mariadb# Nginx error log
tail -f /var/log/nginx/error.log
# PHP-FPM log
tail -f /var/log/php8.4-fpm.logβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENTE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NFTables Firewall β
β (Rate limiting SSH/ICMP, Drop policy) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NGINX β
β βββββββββββββββββββ ββββββββββββββββ ββββββββββββββββββ β
β β WAF Rules β β FastCGI β β Static β β
β β (secure.conf) β β Cache (RAM) β β Files β β
β βββββββββββββββββββ ββββββββββββββββ ββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
β PHP-FPM β β DragonflyDB β
β ββββββββββββ ββββββββββββ β β (Object Cache) β
β β www β β admin β βββββΊβ 25x faster than β
β β pool β β pool β β β Redis, multi-thread β
β ββββββββββββ ββββββββββββ β βββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MySQL / MariaDB β
β (ConfiguraΓ§Γ£o otimizada por RAM) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Este projeto estΓ‘ sob a licenΓ§a MIT. Veja o arquivo LICENSE para mais detalhes.
ContribuiΓ§Γ΅es sΓ£o bem-vindas! Por favor, abra uma issue ou pull request.
Este projeto Γ© voltado para servidores de produΓ§Γ£o. Antes de usar:
- FaΓ§a backup dos seus dados
- Teste em ambiente de desenvolvimento primeiro
- Revise as configuraΓ§Γ΅es de seguranΓ§a para seu caso de uso especΓfico