Ogni sito in Vimonto Deploy ha la sua configurazione Nginx: un unico file con i server block per i suoi domini, HTTPS e l'applicazione. Vimonto Deploy scrive questo file per te e lo mantiene aggiornato quando cambi domini, certificati o impostazioni.
La pagina Nginx di un sito mostra la configurazione e ti permette di modificarla. Ogni modifica viene verificata con nginx -t prima di andare online; se Nginx la rifiuta, resta attiva la configurazione precedente. Trovi la pagina nella barra laterale del sito, sotto Nginx.

Dove si trova la configurazione sul server?
| Percorso | Che cos'è |
|---|---|
/etc/nginx/sites-available/site-{id} |
La configurazione del sito. {id} è il numero del sito in Vimonto Deploy; il percorso è indicato in cima alla pagina. |
/etc/nginx/sites-enabled/site-{id} |
Un symlink al file qui sopra, che fa sì che Nginx lo carichi. |
/etc/nginx/vimonto-conf/site-{id}/*.conf |
Direttive aggiuntive, caricate all'interno del server block del sito. |
/var/log/nginx/site-{id}-access.log e -error.log |
I log delle richieste e degli errori del sito, consultabili nella pagina Log. |
Non modificare questi file a mano sul server: la prossima volta che Vimonto Deploy scrive la configurazione, le tue modifiche vengono sovrascritte. Modifica la configurazione nella pagina Nginx, oppure metti le direttive aggiuntive nella cartella include.
Cosa contiene la configurazione generata?
La configurazione generata dipende dai domini del sito, dal suo certificato e dal suo tipo.
- Domini. Il sito risponde sui suoi domini e sul suo indirizzo generato. L'impostazione www di ogni dominio diventa un blocco di redirect, per esempio da
www.example.comaexample.com. Vedi domini e SSL. - HTTPS. Con un certificato attivo, la porta 80 risponde solo alle verifiche di Let's Encrypt e reindirizza tutto il resto su HTTPS. Il blocco HTTPS è in ascolto sulla porta 443 con HTTP/2 (
listen 443 ssl http2;, che funziona con il Nginx di ogni versione di Ubuntu supportata), TLS 1.2 e 1.3, una cache condivisa delle sessioni TLS e un header HSTS (max-age=31536000). - Web root.
rootpunta alla directory web del sito nella release attiva, per esempio/home/vimonto/example.com/current/public. - Log. Ogni sito scrive il proprio log degli accessi e degli errori.
- Include. La cartella include per le direttive aggiuntive viene caricata all'interno del server block.
- Applicazione. Dipende dal tipo di sito:
| Tipo di sito | Cosa fa la configurazione |
|---|---|
| Laravel e PHP | Invia a index.php le richieste che non corrispondono a un file e passa PHP a PHP-FPM tramite un socket Unix. I siti Laravel inviano a index.php anche gli errori 404. |
| Statico | Serve i file provando $uri, $uri/ e $uri.html, altrimenti un 404. |
| Node.js | Inoltra ogni richiesta alla tua app su 127.0.0.1 e sulla porta che hai impostato, con supporto WebSocket e header X-Forwarded-*. |
| Load balancer | Inoltra ogni richiesta agli app server in un blocco upstream, oppure risponde 503 finché non ce n'è nessuno. Vedi bilanciamento del carico. |
- Protezione. I file nascosti come
.enve.gitsono bloccati, tranne/.well-known. Le richieste difavicon.icoerobots.txtnon vengono registrate nei log. - Dietro un load balancer. Su un app server dietro uno dei tuoi load balancer, il sito si fida di quel load balancer, e solo di quello, per l'indirizzo IP del visitatore (
set_real_ip_from) e per HTTPS (X-Forwarded-Proto). Un sito lì con un proprio certificato serve anche il load balancer in HTTP semplice invece di reindirizzarlo a HTTPS, così i due non si rimandano le richieste all'infinito; tutti gli altri vengono comunque reindirizzati.
Un esempio abbreviato per un sito Laravel con HTTPS:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/certificate-3/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/certificate-3/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:VimontoSSL:10m;
add_header Strict-Transport-Security "max-age=31536000" always;
root /home/vimonto/example.com/current/public;
index index.html index.htm index.php;
charset utf-8;
access_log /var/log/nginx/site-12-access.log;
error_log /var/log/nginx/site-12-error.log error;
# Direttive aggiuntive per questo sito, mantenute quando la configurazione viene riscritta.
include /etc/nginx/vimonto-conf/site-12/*.conf;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
fastcgi_read_timeout 120;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
$realpath_root fa vedere a PHP la vera directory della release invece del symlink current, così una nuova release viene usata non appena va online. Un sito isolato usa il proprio socket PHP-FPM, /run/php/site-{id}.sock.
Aggiungere direttive senza sostituire la configurazione
Per la maggior parte delle modifiche non serve toccare la configurazione stessa. Metti un file .conf nella cartella include del sito, /etc/nginx/vimonto-conf/site-{id}/. Nginx carica ogni file .conf presente lì all'interno del server block principale del sito, e la cartella viene mantenuta ogni volta che Vimonto Deploy riscrive la configurazione.
Per esempio, per aggiungere header di sicurezza, crea /etc/nginx/vimonto-conf/site-12/headers.conf nel terminale:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
Poi verifica e ricarica Nginx con sudo nginx -t && sudo systemctl reload nginx, oppure fai clic su Ricarica accanto a Nginx nella pagina Servizi del server.
Le funzionalità del sito usano la stessa cartella: Protezione con password, Reverb e Hardening di WordPress scrivono ciascuna il proprio file feature-{key}.conf lì.
Modificare la configurazione
- Apri il sito e scegli Nginx nella barra laterale.
- Modifica la configurazione nell'editor.
- Fai clic su Verifica e salva, oppure premi Cmd+S (Ctrl+S su Windows e Linux).
Il salvataggio avviene come task in background chiamato Salvataggio della configurazione Nginx di seguito dal tuo dominio:
- Vimonto Deploy conserva una copia della configurazione attuale e scrive la tua.
- Esegue
nginx -tper verificare l'intera configurazione di Nginx. - Se la verifica riesce, Nginx viene ricaricato e la tua configurazione viene salvata.
- Se la verifica fallisce, viene ripristinata la configurazione precedente, Nginx continua a funzionare senza modifiche e il task fallisce con Nginx ha rifiutato la configurazione; quella precedente è ancora attiva. L'output del task mostra l'errore di
nginx -t.
Un errore di battitura non può quindi mai mettere offline gli altri siti del server.
Cosa cambia quando usi una configurazione tua?
Dopo che hai salvato una configurazione tua, la pagina mostra Configurazione personalizzata. Da quel momento Vimonto Deploy non scrive più la configurazione per te, e sei tu a gestire:
- domini e alias, e il redirect www;
- HTTPS: quando installi un certificato, il task ti indica i percorsi del certificato da aggiungere tu stesso;
- la directory web, la versione di PHP (il socket PHP-FPM) e la porta di un'app Node.js, quando le cambi nelle impostazioni del sito;
- per un sito con bilanciamento del carico, gli app server e il metodo: le modifiche nella pagina Bilanciamento del carico vengono salvate ma non applicate, finché non ripristini la configurazione predefinita;
- per un sito dietro un load balancer, le righe che si fidano del load balancer.
Mantieni la riga include /etc/nginx/vimonto-conf/site-{id}/*.conf; nella tua configurazione. Senza di essa, le funzionalità del sito che aggiungono direttive Nginx non possono essere attivate.
Ripristinare la configurazione generata
Fai clic su Ripristina predefinita e conferma. Le tue modifiche vanno perse, la configurazione generata viene scritta e verificata allo stesso modo, e Vimonto Deploy torna a gestire per te domini e HTTPS.
Chi può modificare la configurazione?
Ogni membro può leggere la configurazione. Per salvare e ripristinare serve il permesso di gestire i siti (proprietario, amministratore, manager e sviluppatore), e il sito e il server devono essere attivi; altrimenti l'editor è in sola lettura. Vedi membri e ruoli.
Domande frequenti
Come aumento la dimensione massima di upload per il mio sito Laravel?
Cambia la dimensione massima di upload nella pagina PHP del server. Imposta i limiti di upload di PHP e il client_max_body_size di Nginx per l'intero server (64 MB di default), quindi non devi modificare la configurazione del sito.
Come aggiungo header o redirect?
Usa la cartella include per gli header (add_header) e i redirect semplici (location = /old { return 301 /new; }). Per modifiche al di fuori del server block, come un nuovo blocco server, modifica la configurazione nella pagina Nginx.
Perché la mia modifica non è andata online?
Apri il task nell'attività del server o nella pagina attività e leggi l'output di nginx -t. Indica il file e la riga che Nginx ha rifiutato.
Posso vedere la configurazione di ogni sito su un server?
La configurazione di ogni sito si trova nella sua pagina Nginx. Tutti i file sono in /etc/nginx/sites-available sul server.