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)
.
📸
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 directoriopublic/
del proyecto Laravel.try_files
: intenta servir archivos directamente o redirige aindex.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:
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.