Configuração do Nginx e PHP-FPM
Configure o Nginx como proxy reverso para o PHP-FPM ao servir aplicações PHP.
Configuração do Nginx e PHP-FPM é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
Por que Nginx + PHP-FPM?
Nginx é um servidor web de alto desempenho e um proxy reverso. O PHP-FPM (FastCGI Process Manager) gerencia um conjunto de processos de trabalho do PHP. O Nginx encaminha as requisições do PHP para o FPM por meio do FastCGI.
Bloco básico de servidor do Nginx
Uma configuração mínima do Nginx para uma aplicação PHP.
# /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com;
root /srv/myapp/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}Diretiva try_files
try_files $uri $uri/ /index.php?$query_string tenta servir primeiro um arquivo estático. Se ele não for encontrado, usa index.php como alternativa, habilitando o roteamento por controlador frontal (Laravel, Symfony).
Configuração do conjunto de processos do PHP-FPM
Configure o conjunto de processos em /etc/php/8.3/fpm/pool.d/www.conf.
[www]
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests = 500 ; recycle workers to prevent leaksSoquete Unix ou TCP
Usar um soquete Unix (fastcgi_pass unix:/run/php/php8.3-fpm.sock) é mais rápido do que usar TCP (127.0.0.1:9000) para a comunicação na mesma máquina.
HTTPS com Let's Encrypt
Use o Certbot para obter certificados TLS gratuitos.
$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewalCompressão Gzip
Ative o gzip para reduzir o tamanho das respostas.
# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;Armazenamento em cache de recursos estáticos no navegador
Adicione cabeçalhos de controle de cache aos arquivos estáticos.
location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}Limitação de taxa no Nginx
Limite as requisições por IP usando um módulo de limitação de requisições, a primeira linha de defesa antes mesmo de o PHP ser iniciado.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}
server {
location /api/ {
limit_req zone=one burst=20 nodelay;
}
}Cabeçalhos de segurança
Adicione cabeçalhos de segurança a todas as respostas.
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";Recarregamento ou reinicialização
Depois de alterar a configuração do Nginx, faça um recarregamento gradual, sem indisponibilidade: nginx -t && nginx -s reload. Depois de alterar a configuração do PHP-FPM: systemctl reload php8.3-fpm.
Resumo
Configure o Nginx com um bloco de servidor que aponte para public/index.php por meio do FastCGI. Ajuste as configurações do conjunto de processos do PHP-FPM. Use soquetes Unix. Ative HTTPS, gzip e o armazenamento em cache de arquivos estáticos.
Verificação rápida
O que faz try_files $uri $uri/ /index.php?$query_string?
Perguntas Frequentes
A aula “Configuração do Nginx e PHP-FPM” é grátis?
Sim — o texto completo de “Configuração do Nginx e PHP-FPM” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “Configuração do Nginx e PHP-FPM”?
Configure o Nginx como proxy reverso para o PHP-FPM ao servir aplicações PHP. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Configuração do Nginx e PHP-FPM”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Configuração do Nginx e PHP-FPM
- Variáveis de ambiente e arquivos .env
- Implantação com GitHub Actions
- Conteinerização de uma aplicação PHP