🌐 Configuración de Nginx en un Contenedor Docker para Laravel
Esta guía describe los pasos necesarios para configurar Nginx dentro de un contenedor Docker basado en Alpine Linux para servir una aplicación Laravel.
🐳 Acceder al contenedor de Nginx
docker exec -it nginx sh
Accede de forma interactiva al contenedor Docker llamado
nginx
.
🔄 Actualización del sistema e instalación de Nginx
apk update
apk add --no-cache nginx nano
Actualiza los paquetes del sistema e instala Nginx y el editor
nano
.
📁 Preparar estructura de configuración
mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled
Crea directorios personalizados para almacenar configuraciones de sitios disponibles y habilitados, similar a entornos basados en Debian.
📝 Crear configuración para Laravel
nano /etc/nginx/sites-available/laravel.conf
Abre un archivo de configuración donde se define el sitio Laravel.
Contenido sugerido para laravel.conf
:
server {
listen 80;
server_name localhost;
# Definimos el directorio del proyecto Laravel
root /var/www/html/Netflox/public;
index index.php index.html index.htm;
# Registro de errores y accesos
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
# Redirección para Laravel
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME /laravel/Netflox/public$fastcgi_script_name;
}
# Bloquear archivos ocultos (.htaccess, etc)
location ~ /\.ht {
deny all;
}
}
🔗 Habilitar el sitio Laravel
ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
Crea un enlace simbólico del archivo de configuración para habilitar el sitio Laravel.
⚙️ Editar configuración global de Nginx
nano /etc/nginx/nginx.conf
Asegúrate de incluir la línea:
include /etc/nginx/sites-enabled/*.conf;
dentro del bloquehttp {}
.
✅ Probar configuración y gestionar Nginx
nginx -t
Verifica que la configuración sea válida.
unlink /etc/nginx/sites-enabled/default
Desactiva el sitio por defecto de Nginx si existe.
nginx # Inicia Nginx
nginx -s stop # Detiene Nginx
nginx -s reload # Recarga la configuración de Nginx sin detener el servicio
🧾 Ver logs de Nginx
cat /var/log/nginx/error.log
Muestra el registro de errores de Nginx, útil para depurar problemas.