Instalar WordPress con Nginx en VPS: tutorial completo paso a paso
Nginx sirve WordPress más rápido que Apache y consume menos RAM. Esta guía te lleva desde un VPS limpio hasta un WordPress production-ready con SSL.
Si quieres control total sobre tu hosting WordPress, Nginx es el servidor web más eficiente que puedes elegir para un VPS. Este tutorial te guía desde la instalación de Nginx hasta la configuración de SSL, seguridad y rendimiento — paso a paso, con comandos que puedes copiar y ejecutar directamente. Pensado para VPS con Ubuntu y usuarios en Chile que necesitan baja latencia y soporte en español.
Nginx vs Apache: ¿cuál elegir para WordPress en VPS?
Antes de instalar nada, vale la pena entender por qué elegirías Nginx sobre Apache para WordPress en un VPS.
Diferencias de rendimiento y uso de memoria
Apache usa un modelo de proceso-por-conexión: cada visitante que llega crea (o reutiliza) un proceso o hilo en el servidor. Con muchos visitantes simultáneos, el consumo de memoria sube rápido.
Nginx usa un modelo event-driven, asíncrono: un proceso puede manejar miles de conexiones simultáneas sin crear un proceso por cada una. Para archivos estáticos (imágenes, CSS, JS), Nginx es significativamente más eficiente.
En números aproximados:
- Apache en reposo: 50-100 MB RAM por proceso
- Nginx worker process: 2-3 MB RAM
- Para 1,000 conexiones simultáneas: Apache puede necesitar varios GB; Nginx puede manejarlo con 50-100 MB
Esta diferencia importa más en VPS con poca RAM (1-2 GB). En servidores con 4 GB o más, la diferencia práctica disminuye.
Cuándo conviene Nginx sobre Apache
Elige Nginx si:
- Tu VPS tiene poca RAM (512 MB - 2 GB)
- Tu sitio tiene tráfico alto o picos de tráfico
- Quieres configurar FastCGI cache a nivel de servidor
- Sabes leer y editar archivos de configuración
Elige Apache si:
- Usas .htaccess para configuraciones por directorio (Nginx no lo soporta)
- Tus plugins o aplicaciones requieren módulos Apache específicos (mod_rewrite nativo, por ejemplo)
- Vienes de hosting compartido cPanel y quieres mantener la configuración conocida
Para la mayoría de instalaciones nuevas de WordPress en VPS, Nginx con PHP-FPM es la arquitectura recomendada en 2026.
Para más contexto sobre cuándo dar el salto a VPS, revisa nuestra guía sobre cuándo migrar de hosting compartido a VPS en Chile.
Requisitos previos: qué necesitas antes de empezar
VPS con Ubuntu 24.04 LTS y acceso SSH
Esta guía usa Ubuntu 24.04 LTS, cuya instalación estándar incluye los paquetes PHP 8.3 usados en los comandos siguientes. Si tu VPS usa Ubuntu 22.04, actualízalo a 24.04 LTS o adapta los comandos a la versión de PHP disponible antes de continuar.
Necesitas:
- VPS con al menos 1 GB RAM (2 GB recomendado para WordPress + MySQL)
- Acceso SSH como root o usuario con sudo
- Ubuntu recién instalado (o con pocos servicios corriendo)
Para conectarte por SSH desde tu máquina:
ssh root@IP_DE_TU_VPS
O si tienes usuario no-root con sudo:
ssh tu_usuario@IP_DE_TU_VPS
Si acabas de crear el VPS, actualiza el sistema antes de instalar nada:
apt update && apt upgrade -y
Para comandos básicos de SSH y terminal, consulta nuestra guía de acceso SSH en cPanel: comandos básicos.
Dominio .cl configurado en DNS
Necesitas un dominio con los registros DNS apuntando a la IP de tu VPS. Los cambios DNS tardan entre 15 minutos y 24 horas en propagarse.
Configura estos registros en el panel de tu registrador de dominio:
A @ IP_DE_TU_VPS A www IP_DE_TU_VPS
Puedes verificar que el DNS está propagado con:
nslookup tu-dominio.cl
Importante: Instala SSL (Certbot) solo después de que el DNS esté propagado. Certbot valida el dominio por HTTP antes de emitir el certificado.
Si quieres entender mejor qué tipo de servidor necesitas, lee sobre qué es un servidor VPS y cuándo conviene en Chile.
Paso 1 — Instalar Nginx en Ubuntu
apt install nginx -y
Verifica que Nginx está corriendo:
systemctl status nginx
Deberías ver active (running). Abre tu navegador con la IP del VPS — deberías ver la página de bienvenida de Nginx.
Habilita Nginx para que inicie automáticamente al reiniciar el servidor:
systemctl enable nginx
Si tienes firewall UFW activo, permite el tráfico HTTP y HTTPS:
ufw allow 'Nginx Full'
Paso 2 — Instalar PHP-FPM para WordPress
Nginx no ejecuta PHP directamente — necesita PHP-FPM (FastCGI Process Manager) como intermediario. WordPress requiere PHP 8.1 o superior.
Instala PHP-FPM y las extensiones que WordPress necesita:
apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl php8.3-bcmath -y
Verifica que PHP-FPM está corriendo:
systemctl status php8.3-fpm
Habilita PHP-FPM para inicio automático:
systemctl enable php8.3-fpm
Optimización PHP-FPM: El archivo de configuración del pool está en /etc/php/8.3/fpm/pool.d/www.conf. Para un VPS de 2 GB RAM dedicado a WordPress, estos valores son un buen punto de partida:
pm = dynamic pm.max_children = 20 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 10 pm.max_requests = 500
Paso 3 — Instalar MySQL/MariaDB y crear la base de datos
WordPress usa MySQL o MariaDB para almacenar todo el contenido. MariaDB es un fork compatible de MySQL, generalmente más rápido para cargas de trabajo WordPress:
apt install mariadb-server -y systemctl enable mariadb mysql_secure_installation
El script mysql_secure_installation te guiará para establecer contraseña de root, eliminar usuarios anónimos y asegurar la instalación. Responde Y a todo.
Crea la base de datos y el usuario de WordPress:
mysql -u root -p CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'contraseña_segura_aqui'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
Guarda el nombre de base de datos, usuario y contraseña — los necesitarás en el Paso 4.
Paso 4 — Descargar e instalar WordPress
Descarga WordPress directamente desde wordpress.org y colócalo en el directorio web:
cd /tmp wget https://wordpress.org/latest.tar.gz tar -xzf latest.tar.gz mv wordpress /var/www/tu-dominio.cl
Configura los permisos correctos — WordPress necesita poder escribir en algunos directorios:
chown -R www-data:www-data /var/www/tu-dominio.cl
find /var/www/tu-dominio.cl -type d -exec chmod 755 {} \;
find /var/www/tu-dominio.cl -type f -exec chmod 644 {} \;
Crea el archivo de configuración de WordPress:
cd /var/www/tu-dominio.cl cp wp-config-sample.php wp-config.php nano wp-config.php
Edita estas líneas con los datos de tu base de datos:
define( 'DB_NAME', 'wordpress_db' ); define( 'DB_USER', 'wp_user' ); define( 'DB_PASSWORD', 'contraseña_segura_aqui' ); define( 'DB_HOST', 'localhost' );
También reemplaza los valores de las claves de seguridad (AUTH_KEY, SECURE_AUTH_KEY, etc.) con valores únicos del generador oficial: https://api.wordpress.org/secret-key/1.1/salt/
Paso 5 — Configurar el virtual host Nginx para WordPress
El virtual host es el archivo que le dice a Nginx cómo servir tu sitio WordPress.
Bloque server básico
Crea el archivo de configuración:
nano /etc/nginx/sites-available/tu-dominio.cl
Contenido del archivo:
server {
listen 80;
server_name tu-dominio.cl www.tu-dominio.cl;
root /var/www/tu-dominio.cl;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Activa el sitio y verifica la configuración:
ln -s /etc/nginx/sites-available/tu-dominio.cl /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx
Rewrite rules para permalinks de WordPress
La línea clave para que los permalinks de WordPress funcionen en Nginx es:
try_files $uri $uri/ /index.php?$args;
Esta directiva le dice a Nginx: primero busca si existe el archivo ($uri), luego si existe el directorio ($uri/), y si no encuentra ninguno, pasa la petición a WordPress via index.php con los parámetros originales ($args).
Sin esta línea, las URLs amigables de WordPress (como /blog/mi-articulo/) devuelven 404.
Configuración de caché FastCGI (opcional pero recomendado)
FastCGI cache almacena las páginas WordPress generadas por PHP directamente en Nginx, evitando que PHP-FPM se ejecute para cada visita. Es equivalente a un plugin de caché pero a nivel de servidor.
Añade esto al bloque http {} de /etc/nginx/nginx.conf:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri";
Luego en tu virtual host:
set $skip_cache 0;
# No cachear peticiones POST o URLs con query strings
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "") { set $skip_cache 1; }
# No cachear URLs sensibles de WordPress
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap") {
set $skip_cache 1;
}
# No cachear si hay cookies de sesión
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
}
Crea el directorio de caché:
mkdir -p /var/cache/nginx chown www-data:www-data /var/cache/nginx
Paso 6 — Instalar certificado SSL con Certbot (Let's Encrypt)
SSL es obligatorio. Google penaliza sitios sin HTTPS y los navegadores muestran advertencias de seguridad en sitios HTTP.
Instala Certbot:
apt install certbot python3-certbot-nginx -y
Obtén e instala el certificado (Certbot modifica el virtual host de Nginx automáticamente):
certbot --nginx -d tu-dominio.cl -d www.tu-dominio.cl
Certbot te pedirá tu email (para notificaciones de renovación) y si quieres redirigir HTTP a HTTPS automáticamente — responde que sí.
Verifica la renovación automática:
certbot renew --dry-run
Certbot instala un timer de systemd que renueva el certificado automáticamente antes de que expire (Let's Encrypt expira cada 90 días). No necesitas hacer nada más.
Para más detalles sobre SSL, consulta nuestra guía para instalar certificado SSL en cPanel con Let's Encrypt.
Paso 7 — Ajustes de seguridad y rendimiento en Nginx
Con WordPress funcionando, estos ajustes reducen la superficie de ataque y mejoran el rendimiento:
Headers de seguridad (HSTS, X-Frame-Options)
Añade estos headers al bloque server {} de tu virtual host:
add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; # HSTS: fuerza HTTPS por 1 año (solo añadir cuando SSL esté funcionando correctamente) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Estos headers le dicen al navegador cómo comportarse con tu sitio y previenen ataques como clickjacking y MIME-type sniffing.
Para profundizar en seguridad, revisa nuestra guía de HTTP headers de seguridad en WordPress.
Deshabilitar acceso a archivos sensibles
Añade estas reglas para bloquear acceso a archivos que no deberían ser públicos:
# Bloquear acceso a wp-config.php
location = /wp-config.php {
deny all;
}
# Bloquear acceso a xmlrpc.php si no lo usas
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
# Bloquear acceso a archivos sensibles de WordPress
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
# Bloquear bots en wp-login.php (limita por IP o usa fail2ban)
# location = /wp-login.php {
# allow TU_IP;
# deny all;
# }
Recarga Nginx después de cada cambio de configuración:
nginx -t && systemctl reload nginx
Solución de errores comunes al instalar WordPress con Nginx
Error 502 Bad Gateway: Nginx no puede comunicarse con PHP-FPM. Causas más comunes:
- PHP-FPM no está corriendo:
systemctl status php8.3-fpm - El socket PHP-FPM en la config de Nginx no coincide con el real: verifica que
/run/php/php8.3-fpm.sockexiste - Permisos del socket:
ls -la /run/php/
Solución rápida:
systemctl restart php8.3-fpm systemctl reload nginx
Error 403 Forbidden: Problema de permisos en los archivos de WordPress. Solución:
chown -R www-data:www-data /var/www/tu-dominio.cl
Permalinks que devuelven 404: Falta la directiva try_files en el virtual host (ver Paso 5). Verifica que tienes:
try_files $uri $uri/ /index.php?$args;
wp-config.php: "Error al establecer conexión con la base de datos": Verifica que los datos de conexión en wp-config.php coinciden con los que usaste al crear la base de datos en MySQL. Prueba la conexión manualmente:
mysql -u wp_user -p wordpress_db
Certbot falla con "Challenge failed": El DNS del dominio no está apuntando a la IP del VPS todavía. Espera a que el DNS se propague completamente antes de correr Certbot.
¿VPS o hosting administrado? Cuándo elegir cada opción
Instalar WordPress en VPS con Nginx te da control total y rendimiento óptimo. Pero tiene un costo real: tiempo de configuración, mantenimiento de seguridad, actualizaciones del sistema operativo y gestión de backups.
Elige VPS con Nginx si:
- Eres desarrollador o sysadmin con experiencia en Linux
- Tienes múltiples sitios o una aplicación con requisitos específicos
- Necesitas configuración muy personalizada de PHP o Nginx
- Administras infraestructura profesionalmente para clientes
Elige hosting administrado (como ElevoCloud) si:
- Tu negocio principal no es la administración de servidores
- Quieres tiempo para hacer crecer tu sitio, no para parchear vulnerabilidades
- Necesitas soporte técnico real cuando algo falla
- Quieres rendimiento LiteSpeed sin mantener el servidor manualmente
La infraestructura de ElevoCloud incluye todo lo que configuramos en esta guía — servidor LiteSpeed optimizado para WordPress, PHP-FPM, MySQL, SSL automático y backups diarios — sin que tengas que tocar una sola línea de configuración.
Para comparar opciones, consulta nuestra guía sobre hosting Linux vs Windows: diferencias.
Preguntas frecuentes: Nginx + WordPress en VPS Chile
¿Qué versión de PHP debo usar con WordPress en 2026?
PHP 8.3 es la versión estable actual y la recomendada. WordPress es compatible desde PHP 7.4, pero las versiones más nuevas son significativamente más rápidas y seguras. Evita versiones end-of-life como PHP 7.4 o 8.0 que ya no reciben actualizaciones de seguridad.
¿Funciona WooCommerce en Nginx?
Sí, WooCommerce funciona perfectamente en Nginx. La clave es tener la directiva try_files correcta para los permalinks. Algunos plugins de WooCommerce usaban reglas .htaccess de Apache, pero los modernos son compatibles con Nginx. Verifica las páginas de carrito y checkout después de instalar WooCommerce.
¿Cuánta RAM necesita un VPS para WordPress con Nginx?
Para un solo sitio WordPress con tráfico moderado: 1 GB RAM es el mínimo funcional, 2 GB es cómodo. Si tienes WooCommerce con muchos productos o varios sitios en el mismo VPS, considera 4 GB. Nginx en sí consume muy poca RAM; el consumo viene de PHP-FPM y MySQL.
¿Cómo actualizo WordPress en un VPS propio?
Las actualizaciones del core de WordPress, plugins y temas se hacen desde el panel de administración de WordPress como siempre. Lo que debes gestionar manualmente son las actualizaciones del sistema operativo (apt update && apt upgrade), PHP-FPM y Nginx. Configura actualizaciones de seguridad automáticas del SO con unattended-upgrades.
¿Necesito saber Linux para usar esta guía?
Sí, conocimiento básico de Linux es necesario: navegar directorios con cd, editar archivos con nano o vim, ejecutar comandos con sudo, y entender permisos de archivos. Si eres nuevo en Linux, el hosting administrado es más adecuado mientras desarrollas esas habilidades.
CTA: ¿No tienes tiempo para administrar un servidor? Los planes VPS administrado de ElevoCloud incluyen WordPress preinstalado, Nginx o LiteSpeed configurado, SSL automático y backups diarios — con soporte técnico en Chile cuando lo necesites.