Contents
Introducción
La migración de un sitio WordPress desde Apache a Nginx puede brindar mejoras sustanciales en rendimiento y eficiencia de recursos. Nginx es un servidor web de alto rendimiento, optimizado para entornos con gran concurrencia de conexiones y consumo reducido de memoria. En este artículo detallado exploraremos paso a paso cómo llevar a cabo esta transición de forma segura, optimizada y con las mejores prácticas de la industria.
Comparativa: Apache vs Nginx
Característica | Apache | Nginx |
---|---|---|
Modelo de Procesos | Basado en procesos/hilos | Event-driven (asimétrico) |
Consumo de Memoria | Alto con muchas conexiones | Bajo y escalable |
Reescritura de URL | .htaccess | Configuración en bloques de servidor |
Manejo de Contenido Estático | Correcto, pero menos eficiente | Excelente, caching integrado |
1. Preparación del Servidor
- Respaldo: Exporta la base de datos (mysqldump) y copia
wp-content
junto al resto de ficheros. - Actualizar Sistema:
sudo apt update sudo apt upgrade -y
- Detener Apache:
sudo systemctl stop apache2 sudo systemctl disable apache2
- Instalar Nginx:
sudo apt install nginx -y
- Instalar PHP-FPM:
sudo apt install php-fpm php-mysql -y
- Firewall: Asegurar puertos con
ufw allow Nginx Full
.
2. Configuración de PHP-FPM
Verifica que PHP-FPM esté activo:
sudo systemctl status php7.4-fpm
En /etc/php/7.4/fpm/pool.d/www.conf
define el socket:
listen = /run/php/php7.4-fpm.sock
3. Bloque de Servidor Nginx para WordPress
Crea un archivo en /etc/nginx/sites-available/wordpress.conf
con:
server {
listen 80
server_name tu-dominio.com www.tu-dominio.com
root /var/www/wordpress
index index.php index.html
access_log /var/log/nginx/wordpress.access.log
error_log /var/log/nginx/wordpress.error.log
location / {
try_files uri uri/ /index.phpargs
}
location ~ .php {
include fastcgi_params
fastcgi_pass unix:/run/php/php7.4-fpm.sock
fastcgi_index index.php
fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name
}
location ~ .(jscsspngjpgjpeggificosvg) {
expires max
log_not_found off
}
}
Activa y prueba la configuración:
sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4. Migración de Datos
- Sube los archivos de WordPress al nuevo
/var/www/wordpress
. - Importa la base de datos:
mysql -u usuario -p nombre_bd lt backup.sql
. - Actualiza
wp-config.php
con nuevas credenciales si es necesario.
5. Rewrite de Permalinks
Nginx no usa .htaccess
, por lo que la directiva try_files
en el bloque location /
resuelve las URL amigables.
6. Configuración de SSL (Let’s Encrypt)
Instala y utiliza Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tu-dominio.com -d www.tu-dominio.com
sudo systemctl reload nginx
7. Optimización y Seguridad
- Gzip: Habilita compresión en
nginx.conf
. - Cacheo: Configura
fastcgi_cache
para acelerar PHP. - Fail2Ban: Protege accesos SSH y peticiones maliciosas.
- Headers de Seguridad: Añade
X-Frame-Options
,Content-Security-Policy
. - Actualizaciones: Mantén Nginx, PHP y WordPress al día.
8. Resolución de Errores Comunes
- 403 Forbidden: Revisar permisos de
/var/www/wordpress
ynginx
user. - 502 Bad Gateway: Verificar que PHP-FPM esté corriendo y el socket correcto.
- 504 Gateway Timeout: Ajustar
fastcgi_read_timeout
.
Conclusión
Migrar WordPress de Apache a Nginx representa un avance significativo en rendimiento y escalabilidad. Siguiendo este proceso detallado y aplicando las recomendaciones de seguridad y optimización, tendrás un entorno robusto y preparado para alto tráfico.
|
Acepto donaciones de BAT's mediante el navegador Brave 🙂 |