Drupal es un potente sistema de gestión de contenidos (CMS) conocido por su flexibilidad y seguridad, que lo convierte en la elección ideal para desarrolladores y propietarios de sitios web que buscan construir sitios robustos y escalables. Sin embargo, para aprovechar al máximo las capacidades de Drupal, es fundamental contar con una configuración de servidor web optimizada. Nginx, por su eficiencia en el manejo de conexiones simultáneas y su bajo consumo de recursos, se presenta como una excelente opción para alojar sitios Drupal de alto rendimiento. En este artículo, exploraremos cómo configurar Nginx para un sitio Drupal, garantizando un despliegue óptimo para desarrolladores y nuevos usuarios por igual.
Instalación de Nginx
Antes de sumergirnos en la configuración específica de Drupal, necesitamos asegurarnos de que Nginx esté instalado en nuestro servidor. Para usuarios de Linux, Nginx puede instalarse fácilmente a través del gestor de paquetes de su distribución. En distribuciones basadas en Debian o Ubuntu, el comando sería:
sudo apt update
sudo apt install nginx
Para CentOS o RHEL, el comando sería:
sudo yum install nginx
Una vez instalado, puedes iniciar el servicio Nginx y habilitarlo para que se ejecute al inicio con los siguientes comandos:
sudo systemctl start nginx
sudo systemctl enable nginx
Configuración Básica de Nginx para Drupal
La configuración de Nginx para un sitio Drupal implica ajustar el archivo de configuración para el sitio específico dentro de /etc/nginx/sites-available
y crear un enlace simbólico de este archivo en /etc/nginx/sites-enabled
para activarlo. Aquí hay un ejemplo básico de cómo podría verse esta configuración:
server {
listen 80;
server_name midominio.com www.midominio.com;
root /var/www/midominio.com;
index index.php index.html index.htm;
location / {
try_files $uri /index.php?$query_string;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ '\.php$|^/update.php' {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^.+\.php$ {
return 404;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
try_files $uri @rewrite;
expires max;
log_not_found off;
}
}
Este es un ejemplo básico y debe ser adaptado según las necesidades específicas de tu sitio y la configuración del servidor.
Optimizaciones Específicas para Drupal
Para asegurar un rendimiento óptimo de tu sitio Drupal con Nginx, considera las siguientes prácticas recomendadas:
1. Caché Estática:
Drupal se beneficia significativamente del caching de archivos estáticos como imágenes, CSS y JavaScript. La directiva expires max;
en la configuración de Nginx ayuda a definir un tiempo de expiración largo para estos recursos, reduciendo la carga en el servidor y acelerando la carga de páginas para los visitantes recurrentes.
2. Compresión Gzip:
La compresión Gzip reduce el tamaño de los archivos antes de su transferencia, lo que puede mejorar significativamente los tiempos de carga. Puedes habilitar Gzip en Nginx agregando las siguientes directivas en tu archivo de configuración nginx.conf
:
gzip on;
gzip_types text/plain application/xml application/json application/javascript text/css application/font-woff image/svg+xml;
gzip_proxied any;
3. Bloqueo de Acceso a Archivos Sensibles:
Drupal tiene archivos y directorios que no deben ser accesibles públicamente por razones de seguridad. Puedes bloquear el acceso a estos mediante la configuración de Nginx:
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
location ~* /\.(?!well-known).* { return 403; }
Servicios de Shape.host para Drupal en Nginx
Para los sitios Drupal que buscan un rendimiento excepcional sin la complejidad de gestionar la infraestructura de hosting, los servicios Linux SSD VPS de Shape.host ofrecen una solución robusta y escalable. Con VPS optimizados para Nginx, Shape.host asegura que tu sitio Drupal cargue rápidamente y maneje eficientemente altos volúmenes de tráfico, brindándote la flexibilidad para escalar recursos según las necesidades de tu proyecto.