Skip to content

📌 Esquema de configuració de Nginx en Docker per a Ubuntu

🛠️ Instal·lació de dependències

  1. Accedir al contenidor Nginx:
    Per començar, accedeix al contenidor de Docker on vols configurar Nginx. Si tens un contenidor ja creat, utilitza la comanda: bash docker exec -it <contenedor_id> /bin/bash

  2. Actualitzar la llista de paquets:
    Actualitza els paquets disponibles a Ubuntu per garantir que tot està al dia: bash apt-get update

  3. Instal·lar Nginx i Nano:
    Instal·la Nginx i l'editor de text Nano (per editar arxius de configuració): bash apt-get install -y nginx nano


⚙️ Configuració de directoris i arxius

  1. Crear els directoris necessaris per gestionar llocs web:
    Crea els directoris sites-available i sites-enabled per gestionar les configuracions dels llocs web: bash mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled

  2. Crear l'arxiu de configuració de Nginx per Laravel a sites-available:
    Crea un arxiu de configuració específic per al projecte Laravel, per exemple, laravel.conf: bash nano /etc/nginx/sites-available/laravel.conf Aquest arxiu hauria de tenir una configuració bàsica com la següent: ```nginx server { listen 80; server_name example.com;

    root /var/www/html/public; # Ajusta el path segons el teu contenidor

    index index.php index.html index.htm;

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

    location ~ .php$ { include fastcgi_params; fastcgi_pass php-fpm:9000; # Ajusta segons el teu contenidor PHP-FPM fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

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

  3. Configurar el root segons el volum utilitzat al docker-compose.yml:
    Assegura't que el directori root a la configuració apunti al directori correcte dins del contenidor, segons la configuració de volums a docker-compose.yml. Per exemple: ```yaml volumes:

    • ./laravel:/var/www/html ```
  4. Habilitar els logs d'error i d'accés de Nginx:
    Configura els arxius de log per registrar errors i accés de les peticions: nginx error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log;

  5. Configurar la gestió de sol·licituds PHP cap al contenidor laravel amb PHP-FPM:
    Configura la connexió amb PHP-FPM per tal que Nginx pugui processar arxius PHP: nginx location ~ \.php$ { fastcgi_pass php-fpm:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }


🔧 Enllaç simbòlic i configuració addicional

  1. Crear un enllaç simbòlic a sites-enabled per activar la configuració:
    Crea un enllaç simbòlic des de sites-available fins a sites-enabled per activar la configuració del lloc web: bash ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/

  2. Modificar l'arxiu de configuració principal de Nginx per incloure els arxius de sites-enabled:
    Assegura't que el fitxer de configuració principal de Nginx (/etc/nginx/nginx.conf) inclogui els arxius de configuració del directori sites-enabled: nginx include /etc/nginx/sites-enabled/*;


🚀 Verificació i reinici de Nginx

  1. Verificar la configuració de Nginx:
    Comprova que la configuració de Nginx no tingui errors: bash nginx -t

  2. Eliminar l'enllaç simbòlic per defecte si és necessari:
    Si tens problemes amb la configuració predeterminada (default), elimina l'enllaç simbòlic que apunta a aquest fitxer: bash rm /etc/nginx/sites-enabled/default

  3. Reiniciar Nginx:
    Finalment, reinicia Nginx per aplicar la nova configuració: bash service nginx restart


📝 Verificació dels logs

  1. Consultar els logs de Nginx per comprovar el funcionament:
    Si tens dubtes o vols verificar que tot estigui funcionant correctament, pots consultar els logs d'errors i d'accés: bash tail -f /var/log/nginx/error.log tail -f /var/log/nginx/access.log

Amb aquests passos hauràs configurat Nginx correctament dins un contenidor Docker per servir un lloc Laravel a Ubuntu. Si tens algun dubte o necessites més detalls, no dubtis a preguntar!