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"
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10sAll’interno della configurazione è presente anche un blocco healthcheck che verifica periodicamente il corretto funzionamento del servizio. Ogni 30 secondi Docker invia una richiesta HTTP alla porta 80 del container e, se il web server risponde correttamente, lo stato viene segnato come healthy. In caso di tre tentativi consecutivi falliti, il container viene marcato come unhealthy, permettendo di individuare rapidamente eventuali problemi.
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.
Può capitare che la cartella website venga creata con permessi di root, impedendo il caricamento o la modifica dei file. In questo caso è necessario cambiare il proprietario della cartella, assegnandola all’utente che gestisce il container:
sudo chown -R utente:utente /home/utente/website/Configurazione Comando
Sostituireutente con il proprio nome utente e verificare che il percorso corrisponda alla posizione effettiva della cartella website.
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.
Prossimi Passi
Ora che il tuo sito è online all’interno della rete locale, potresti volerlo esporre su internet in modo sicuro (tramite HTTPS). Per farlo, ti consigliamo di configurare un reverse proxy. Puoi seguire la nostra guida su NGINX Proxy Manager o Caddy .