Instalación y configuración de NGINX para Laravel en entorno real

NGINX actuará como servidor web para servir nuestra aplicación Laravel y como intermediario entre el navegador del cliente y PHP-FPM, que ejecuta el backend de Laravel. A continuación se detallan los pasos necesarios para instalar, configurar y activar NGINX.


1. Instalar NGINX

Ejecutamos:

apt install nginx

Este comando instala el servidor web NGINX y configura el servicio para que se inicie automáticamente al arrancar el sistema.

NGINX es ligero, rápido y ampliamente utilizado en despliegues de Laravel por su eficiencia y compatibilidad con PHP-FPM.


2. Verificar estado del servicio

Una vez instalado, comprobamos que el servicio NGINX esté en ejecución:

systemctl status nginx

La salida debe indicar que el servicio está active (running).

📸 Estado del servicio NGINX


3. Configurar sitio Laravel

Laravel debe estar alojado dentro de una configuración específica en NGINX para que pueda funcionar correctamente. Creamos un archivo llamado laravel.conf en /etc/nginx/sites-available/ con el siguiente contenido:

server {
    listen 80;
    server_name 10.1.1.109;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name 10.1.1.109;

    ssl_certificate /etc/ssl/certs/ssl-cert.crt;
    ssl_certificate_key /etc/ssl/private/ssl-cert.key;

    root /var/www/html/proyecto-laravel/laravel-9.0-main/public;
    index index.php index.html index.htm;

    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

Explicación clave del bloque server:

  • Redirección HTTPS: el primer bloque escucha en el puerto 80 (HTTP) y redirige automáticamente a HTTPS.
  • SSL habilitado: el segundo bloque escucha en el puerto 443 y utiliza certificados SSL ya generados.
  • root: apunta al directorio public/ del proyecto Laravel.
  • try_files: intenta servir archivos directamente o redirige a index.php, comportamiento típico en Laravel.
  • fastcgi_pass: conecta NGINX con PHP-FPM mediante el socket de PHP 8.2.
  • SCRIPT_FILENAME: define la ruta del archivo PHP que se va a ejecutar.
  • deny all en .ht: protege archivos sensibles como .htaccess.

📸 ### Ejemplo visual de la configuración:

Parte 1 - laravel.conf Parte 2 - laravel.conf Parte 1 - nginx.conf Parte 2 - nginx.conf

  • part_1_laravel_conf.png
  • part_2_laravel_conf.png
  • part_1_nginx_conf.png
  • part_2_nginx_conf.png

Enlazar el sitio en NGINX

Después de crear el archivo de configuración, debemos activarlo enlazándolo a sites-enabled:

ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/

Esto permite que NGINX lo cargue al iniciarse o al recargar su configuración.


4. Reiniciar NGINX

Para aplicar la nueva configuración, reiniciamos el servicio:

systemctl restart nginx

Este comando recarga NGINX con todos los cambios aplicados.

Nos aseguramos de no tener errores de sintaxis en los archivos .conf usando:

nginx -t

Si todo está bien configurado, al acceder a https://10.1.1.109 desde el navegador veremos nuestra aplicación Laravel funcionando sobre HTTPS.