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.
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:
docker-compose up -d --buildQuesto 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.htmlnella cartellawebsiteo a permessi insufficienti. Verificare che la cartella contenga almeno un fileindex.htmle 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.