Skip to content

Configurar Nginx para varios tipos de instalación de WordPress

configurar wordpress nginx

WordPress se ha convertido en uno de los CMS más utilizados hoy en día en Internet gracias a la gran comunidad de desarrolladores que tiene detrás de sí y a las muchas opciones que ofrece para crear desde portales sencillos hasta complejas páginas web.

Este CMS funciona sobre cualquier servidor HTTP como puede ser Apache o Nginx, cuya fama ha aumentado en los últimos años gracias a su arquitectura basada en eventos escalable, pocos consumos de recursos y un mejor envío de ficheros estáticos. A lo largo de este tutorial os explicaremos como configurar Nginx para varios tipos de instalación de WordPress, incluyendo configuración multisite, reglas de reescritura y el uso de archivos .conf para aplicar configuraciones repetidas.

Requerimientos

Para poder llevar los cambios que explicaremos en nuestros planes de alojamiento, tendremos que tener acceso como superusuario ya sea en un servidor dedicado, VPS o estructura Cloud. También daremos por supuesto que nuestro plan de alojamiento tiene instalado MySQL, PHP y Nginx.

Optimización básica de Nginx

1.- Ajustando los procesos y conexiones de Nginx

Es recomendable asignar el número de trabajos de Nginx igual al número de procesos del servidor. Puedes determinar este número ejecutando lo siguiente.

Abrimos el fichero principal de configuración de Nginx:

Incrementamos o disminuimos el número de procesos dependiendo del valor obtenido.

Por otro lado, Nginx limita el número de conexiones que un proceso puede atender simultáneamente. Si tu web tiene muchos visitantes, deberíamos incrementar este valor. En teoría, el valor máximo que podríamos asignar sería el de multiplicar procesos por el límete.

2.- Habilitando Gzip

Los ficheros pueden ser comprimidos utilizando Gzip para acelerar la carga de las distintas páginas de WordPress, a menor peso, mayor rapidez al ser servidas. Si revisamos los ficheros CSS o HTML, veremos que contienen algunas similares cadenas como espacios en blanco o texto repetido. Gzip utiliza un algoritmo denominado DEFLATE que remueve cadenas duplicadas señalando las zonas que contenían esas cadenas repetidas. Para habilitar Gzip, localizamos esa sección en el archivo de configuración y la activamos.

Para finalizar, guardamos los cambios y salimos.

Creando ficheros .conf de Nginx

Dado que es posible que en tu servidor alojes más de un sitio que utilice WordPress, vamos a crear un fichero .conf que podremos utilizar para crear el sitio en vez de realizar la misma configuración una y otra vez.

A continuación vamos a crear tres archivos de configuración que utilizaremos dependiendo del tipo de web que daremos de alta en nuestro hosting.

  • common.conf: Configuración aplicable a todos los sitios.
  • wordpress.conf: Configuración aplicable a todos los WordPress.
  • multisite.conf: Configuración especial para instalación WordPress multisite con subdirectorios.

Crearemos todos estos ficheros en un directorio que llamaremos “global”, pero primero tendremos que crear este directorio.

Accedemos a este directorio creado.

A continuación empezamos a crear cada uno de los archivos que hemos nombrado anteriormente.

1.- Common.conf

Primero lo creamos.

Abrimos el archivo vacío que hemos creado y copiamos la siguiente configuración.

A continuación explicamos el código anterior.

  • listen 80: Especificamos el puerto del servidor.
  • index index.php…: Especificamos el fichero por defecto del servidor. Si no se encuentra el primero, buscará el segundo y así sucesivamente.
  • location = /robots.txt {allow all;}: Permite el acceso al robot.txt.
  • location ~ /\. {deny all;}: Bloqueamos el acceso a archivos cuyo nombre empieza por “.”, como es el caso del .htaccess.
  • location ~* ^.+\.(js|css|swf…: Estamos indicando a los navegadores si la respuesta la deben solicitar al servidor o bien buscarla en la cache del navegador. Con 30d le estamos indicando que almacene ese tipo de información durante 30 días.

2.- wordpress.conf

Creamos el archivo.

Copiamos en él la siguiente configuración.

A continuación explicamos las líneas más importantes.

  • try_files $uri $uri/ /index.php?q=$uri&$args: Esta regla es necesaria para permitir elegir la estructura de permalink que utilizarás en tu WordPress.
  • location ~* /(?:uploads|files)/.*\.php$ {deny all;}: Para prevenir código malicioso subido y ejecutado en el directorio donde se suben los archivos multimedia.
  • location ~ \.php$ {…}: Para decirle a Nginx que ejecute los archivos php.
  • try_files $uri =404: Se trata de una regla de seguridad.

3.- multisite.conf

Creamos el archivo.

Lo editamos y copiamos la siguiente configuración.

Con las líneas anteriores, estamos creando una regla para crear los permalink de nuestro multisite.

Creando bloques del servidor

Es hora de crear nuestro primer bloque de servidor. Puesto que ya hemos configurado todos nuestros archivos de configuración, no es necesario duplicar el archivo de bloque que viene por defecto. Vamos a desactivar este bloque.

Creamos un nuevo bloque.

Esto abrirá un archivo vacío. Copiamos las siguientes configuraciones en función de lo que necesitemos.

1.- Instalación simple WordPress

Imagine que desea configurar un sitio de WordPress con el dominio www.demo.com. En primer lugar vamos a tener que crear en el servidor un bloque server {…} donde vamos a poner nuestras reglas. Debemos especificar qué se utiliza un bloque de servidor para una determinada URL, incluimos common.conf y wordpress.conf y finalmente le diremos NGINX la ubicación de la instalación de WordPress en nuestro servidor.

Podemos ver que hay dos bloques server porque www.demo.com y demo.com son diferentes urls.

2.- WordPress Multisite con subdirectorios

Si queremos instalar un multisite con directorios, necesitamos incluir las reglas almacenadas en multisite.conf.

3.- WordPress Multisite con subdominios

Si desea una instalación para varios sitios con subdominios tendrá que configurar este bloque de la siguiente forma.

De esta forma que hemos visto a lo largo de esta entrada, podremos crear sitios webs de forma sencilla y rápida.

Published inComunicados

Be First to Comment

Deja un comentario

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