Configuración de Nginx y PHP-FPM
Configure Nginx como proxy inverso de PHP-FPM para servir aplicaciones PHP.
Configuración de Nginx y PHP-FPM es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.
¿Por qué Nginx + PHP-FPM?
Nginx es un servidor web de alto rendimiento y un proxy inverso. PHP-FPM (FastCGI Process Manager) administra un grupo de procesos worker de PHP. Nginx pasa las solicitudes de PHP a FPM mediante FastCGI.
Bloque de servidor básico de Nginx
Una configuración mínima de Nginx para una aplicación 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;
}
}Directiva try_files
try_files $uri $uri/ /index.php?$query_string intenta servir primero un archivo estático. Si no lo encuentra, recurre a index.php, lo que permite el enrutamiento mediante un controlador frontal (Laravel, Symfony).
Configuración del grupo de PHP-FPM
Configure el grupo de workers en /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 leaksSocket Unix frente a TCP
El uso de un socket Unix (fastcgi_pass unix:/run/php/php8.3-fpm.sock) es más rápido que TCP (127.0.0.1:9000) para la comunicación entre procesos de la misma máquina.
HTTPS con Let's Encrypt
Utilice Certbot para obtener certificados TLS gratuitos.
$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewalCompresión Gzip
Active gzip para reducir el tamaño de las respuestas.
# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;Caché del navegador para recursos estáticos
Añada encabezados de control de caché para los archivos estáticos.
location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}Limitación de solicitudes en Nginx
Limite las solicitudes por dirección IP mediante el módulo limit_req: es la primera línea de defensa antes incluso de que se inicie PHP.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}
server {
location /api/ {
limit_req zone=one burst=20 nodelay;
}
}Encabezados de seguridad
Añada encabezados de seguridad a todas las respuestas.
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";Recargar frente a reiniciar
Después de cambiar la configuración de Nginx, recárguelo de forma gradual (sin tiempo de inactividad): nginx -t && nginx -s reload. Después de cambiar la configuración de PHP-FPM: systemctl reload php8.3-fpm.
Resumen
Configure Nginx con un bloque de servidor que apunte a public/index.php mediante FastCGI. Ajuste la configuración del grupo de PHP-FPM. Utilice sockets Unix. Active HTTPS, gzip y la caché de archivos estáticos.
Comprobación rápida
¿Qué hace try_files $uri $uri/ /index.php?$query_string?
Preguntas frecuentes
¿La lección «Configuración de Nginx y PHP-FPM» es gratis?
Sí — el texto completo de «Configuración de Nginx y PHP-FPM» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Configuración de Nginx y PHP-FPM»?
Configure Nginx como proxy inverso de PHP-FPM para servir aplicaciones PHP. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Configuración de Nginx y PHP-FPM»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Configuración de Nginx y PHP-FPM
- Variables de entorno y archivos .env
- Despliegue con GitHub Actions
- Contenerización de una aplicación PHP