Migrar WordPress de Apache a Nginx

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

  1. Sube los archivos de WordPress al nuevo /var/www/wordpress.
  2. Importa la base de datos: mysql -u usuario -p nombre_bd lt backup.sql.
  3. 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 y nginx 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 🙂



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *