NGINX è un web server open-source ampiamente utilizzato per servire contenuti statici. Grazie alla sua architettura efficiente e scalabile, è diventato una delle scelte più popolari per ospitare siti web, landing page e documentazione. Progettato per gestire migliaia di connessioni simultanee con un consumo di risorse minimo, rappresenta la soluzione ideale per chi cerca prestazioni elevate senza complessità.

Utilizzando l’immagine Docker nginx:alpine, si ottiene un container estremamente leggero (pochi MB) basato su Alpine Linux, perfetto per il self-hosting. Questa configurazione è ideale per servire siti statici HTML, portfolio personali, documentazione, landing page o qualsiasi contenuto che non richieda elaborazione server-side, database o CMS.

NGINX vs Apache: quale scegliere?

Per poter ospitare dei siti, è possibile utilizzare anche Apache HTTP Server . Anche se hanno scopi molto simili, questi possono essere utilizzati in modo differente in base alle proprie esigenze. Le caratteristiche principali sono riassunte nella tabella sotto, ma in sintesi: scegli NGINX se devi ospitare siti statici ad alte prestazioni in ambienti con risorse limitate. Scegli invece Apache se hai bisogno di .htaccess, vuoi ospitare applicazioni PHP tradizionali o usare un singolo container per ospitare più siti (hosting condiviso).

Scenario Apache NGINX
Siti statici semplici SI CONSIGLIATO
Applicazioni PHP (WordPress, Laravel) CONSIGLIATO SI
Configurazioni per-directory (.htaccess) CONSIGLIATO NO
Risorse limitate (RAM/CPU) SI CONSIGLIATO
Alto traffico / molte connessioni SI CONSIGLIATO
Reverse proxy / Load balancer SI CONSIGLIATO
Hosting condiviso CONSIGLIATO SI
Moduli dinamici a runtime CONSIGLIATO NO

Processo di Installazione

Dopo aver installato Docker Engine e Docker Compose, è possibile procedere con il deploy del web server NGINX.

Il file docker-compose.yml qui sotto configura un unico servizio (website_personal) e non richiede variabili d’ambiente o configurazioni particolari. L’unica accortezza è la creazione della cartella website che conterrà i file del sito statico, mappata sul volume /usr/share/nginx/html del container. La porta 8010 dell’host viene esposta per accedere al sito tramite browser.

yaml
  website_personal:
    image: nginx:alpine
    container_name: website_personal
    restart: always
    volumes:
      - ./website:/usr/share/nginx/html
    ports:
      - "8010:80"

Avvio del Container

Per avviare il container, spostarsi nella directory contenente il file docker-compose.yml ed eseguire il seguente comando:

bash
docker-compose up -d --build

Questo comando avvia il servizio in modalità detached, consentendo di funzionare in background. Una volta avviato, il sito sarà accessibile all’indirizzo http://<indirizzo_IP_server>:8010.

Troubleshooting & Consigli

Qui di seguito sono elencati i possibili problemi che si possono riscontrare nell’installazione o nell’utilizzo del container:

  • Pagina bianca o errore 403 Forbidden: Se accedendo al sito viene visualizzata una pagina bianca o un errore 403, il problema è quasi sempre legato alla mancanza del file index.html nella cartella website o a permessi insufficienti. Verificare che la cartella contenga almeno un file index.html e che i permessi siano corretti (permessi 644).
  • Il container non si avvia: Se il container non si avvia o si ferma immediatamente dopo l’avvio, la causa più comune è un conflitto di porte. La porta 8010 potrebbe essere già utilizzata da un altro servizio.
  • Le modifiche ai file non sono visibili: Dopo aver modificato i file nella cartella website, le modifiche potrebbero non essere immediatamente visibili nel browser. Prima di tutto, svuotare la cache del browser o provare in modalità incognito.
  • Per migliorare la stabilità consiglio di andare ad utilizzare una versione “statica” come ad esempio 1.28 o stable-alpine, in modo da non creare problemi durante eventuali aggiornamenti automatici.