🌐 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 bloque http {}.


✅ 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.