Nginx es un servidor web gratuito de código abierto, sin mencionar uno de los servidores web más utilizados en el mundo. Se puede utilizar como proxy inverso, proxy de correo, equilibrador de carga y servidor de almacenamiento en caché. Nginx es altamente escalable y está especialmente diseñado para lograr el máximo rendimiento y estabilidad. Utiliza una arquitectura basada en eventos y maneja todas las solicitudes entrantes en un solo hilo.
Nginx viene con un módulo FastCGI que se puede usar para almacenar en caché el contenido dinámico servido desde el backend de PHP. No necesita configurar otras soluciones de almacenamiento en caché como Redis, Varnish, Memcache después de configurar Nginx con caché FastCGI.
En este tutorial, le mostraremos cómo configurar el caché Nginx FastCGI con LEMP en Ubuntu 18.04.
Requisitos
- Un Ubuntu 18.04 VPS nuevo en Atlantic.Net Cloud Platform
- Una contraseña de root configurada en su servidor
Paso 1:crear el servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 18.04 como sistema operativo, con al menos 1 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor Ubuntu 18.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
apt-get update -y
Paso 2:instalar el servidor LEMP
Comencemos con la instalación de LEMP (Nginx, PHP, PHP-FPM) en su servidor.
apt-get install nginx php php-cli php-fpm -y
El comando anterior también instalará el servidor web Apache en su sistema, por lo que deberá detener y deshabilitar el servicio Apache.
systemctl stop apache2 systemctl disable apache2
A continuación, inicie el servicio Nginx y PHP-FPM con el siguiente comando:
systemctl start nginx systemctl start php7.2-fpm
Una vez que haya terminado, puede continuar con el siguiente paso.
Paso 3:cree un sitio web de muestra
Primero, crea un directorio para tu sitio web con el siguiente comando:
mkdir /var/www/html/example.com
A continuación, cree un archivo info.php de muestra dentro del directorio de su sitio web:
nano /var/www/html/example.com/info.php
Agregue las siguientes líneas:
<?php phpinfo(); ?>
Guarde y cierre el archivo. Luego, cambia la propiedad de tu sitio web a www-data user:
chown -R www-data:www-data /var/www/html/example.com chmod -R 755 /var/www/html/example.com
Una vez que haya terminado, puede continuar con el siguiente paso.
Paso 4:configurar Nginx con FastCGI Cache
A continuación, deberá crear un nuevo archivo de configuración de host virtual Nginx para servir su sitio web y habilitar el caché FastCGI.
nano /etc/nginx/sites-available/example.com.conf
Agregue las siguientes líneas:
# Enable FastCGI Support fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=nginxcache:150m max_size=1g inactive=60m use_temp_path=off; fastcgi_cache_key "$scheme$request_method$host$request_uri"; add_header X-Cache $upstream_cache_status; server { listen 80; root /var/www/html/example.com; client_max_body_size 256M; index info.php; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location = /favicon.ico { access_log off; log_not_found off; } #Disable caching for login session, user cookie, POST request, query string, site map and feeds set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Enable caching for your website. location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index info.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors off; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; fastcgi_connect_timeout 600; fastcgi_send_timeout 600; fastcgi_read_timeout 600; fastcgi_cache nginxcache; fastcgi_cache_valid 200 301 302 60m; fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503; fastcgi_cache_min_uses 1; fastcgi_cache_lock on; } }
Guarde y cierre el archivo cuando haya terminado, luego verifique si hay errores de sintaxis en Nginx con el siguiente comando:
nginx -t
Deberías obtener el siguiente resultado:
A continuación, habilite el archivo de host virtual de Nginx con el siguiente comando:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Finalmente, vuelva a cargar el servicio Nginx para aplicar los cambios:
systemctl restart nginx
A continuación se muestra una breve explicación de cada directiva en el archivo de configuración anterior:
- ruta_caché_fastcgi crea un caché FastCGI y especifica la ubicación del caché, el nombre de la zona de memoria (nginxcache) con tamaño (150 M), max_size (1 G) y define la clave para la búsqueda de caché.
- añadir_encabezado se utiliza para validar si la solicitud se ha servido desde la memoria caché FastCGI o no.
- cgi rápido especifica la ruta del socket php-fpm.
- fastcgi_cache habilita el almacenamiento en caché, que hemos especificado usando la zona de memoria en la directiva fastcgi_cache_path.
- fastcgi_cache_valid establece el tiempo de caché con el código de estado 200, 301, 302 se almacenará en caché durante 60 minutos.
- fastcgi_cache_lock solo permite la primera solicitud a través del servidor PHP-FPM ascendente.
Paso 5:Probar la memoria caché Nginx FastCGI
En este punto, Nginx está instalado y configurado con compatibilidad con FastCGI Cache. Es hora de verificar si el almacenamiento en caché funciona o no.
Abra su navegador web, acceda a su servidor web Nginx utilizando la URL http://example.com y vuelva a cargar la página varias veces.
A continuación, abra su terminal y ejecute el siguiente comando para obtener el encabezado de respuesta http.
curl -I http://example.com
Deberías obtener el siguiente resultado:
HTTP/1.1 200 OK Server: nginx/1.14.0 (Ubuntu) Date: Fri, 24 Apr 2020 16:07:24 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Cache: HIT
Del resultado anterior, X-Cache:HIT indica que la respuesta se envió desde el caché.
Conclusión
¡Felicidades! Ha configurado correctamente Nginx con compatibilidad con FastCGI Cache. Después de habilitar el almacenamiento en caché, debería notar una gran mejora en el rendimiento porque las páginas se cargan sin tener que procesarlas con PHP. Pruebe FastCGI Cache en Nginx hoy con el servicio de alojamiento VPS de Atlantic.Net.