Nginx Proxy Manager (in gergo NPM) è uno strumento potente e user-friendly progettato per semplificare la gestione di server proxy Nginx. Pensato per utenti di tutti i livelli, NPM offre un’interfaccia grafica intuitiva che permette di configurare e gestire in modo efficace i tuoi proxy, senza la necessità di scrivere manualmente file di configurazione Nginx complessi.
Come funziona Nginx?
Immaginiamo ad NGINX come se fosse un postino:
- Riceve le lettere Quando tu (client) cerchi di raggiungere un sito web (destinatario), la tua richiesta (la lettera) arriva prima a Nginx.
- Inoltra le lettere: Invece di consegnare direttamente la lettera, Nginx la prende e la inoltra al destinatario corretto (il server web dove si trova il sito).
- Riceve le risposte:** Il server web elabora la richiesta e invia la risposta (la lettera di risposta) a Nginx.
- Consegna le risposte:** Nginx riceve la risposta e la inoltra a te, così puoi vedere il contenuto del sito web.
Perché usare un postino (Nginx)?
- Velocità: Nginx è molto veloce nell’inoltrare le lettere, rendendo i siti web più rapidi.
- Sicurezza: Può proteggere il tuo sito web da attacchi e può crittografare le comunicazioni (HTTPS).
- Flessibilità: Può fare molte altre cose oltre a inoltrare le lettere, come bilanciare il carico tra diversi server o memorizzare nella cache le risposte per renderle ancora più veloci.
Requisiti
- Dominio
- VPS con indirizzo IP Statico (attenzione ai limiti di banda)
Installazione di Nginx Proxy Manager
Per prima cosa, assicuriamoci di aver installato sul nostro server docker e docker compose, per verificarlo digitiamo sul nostro terminale il comando:
| |
Se riceviamo a video una risposta simile a questa abbiamo docker installato:
in caso contrario leggi la mia guida su come installare docker
Verificata l’installazione di docker e docker compose possiamo procedere con il deploy vero e proprio di NPM, per prima cosa andiamo a creare una directory dove verranno salvate le varie configurazioni di NGINX, per praticità creeremo una cartella “data”, quindi da terminale:
| |
Assegnamo l’utente (nel caso di questo tutorial giuseppe ma varia in base al vostro utente) la proprietà di lettura e scrittura:
| |
A questo punto creiamo la directory per Nginx Proxy Manager:
| |
Rechiamoci all’interno della directory appena creata con il comando cd:
| |
Una volta dentro creiamo il file per il deploy di nginx-proxy-manager:
| |
Nell’editor di testo copiamo il seguente codice:
Salviamo il file con il consueto CTRL+X e successivamente “Y” per confermare, ed iniziamo a fare il “pull”, ovvero a scaricare l’immagine dal docker hub, con il comando:
| |
Alla fine del “pulling” dovremmo avere una schermata simile a questa:

A questo punto impostiamo una regola “ufw” per aprire le porte del nostro server al pubblico:
Adesso possiamo avviare il nostro container:
| |
Dai LOG dovremmo non vedere errori particolari, intanto rechiamoci sul browser ed apriamo la seguente pagina: http://IP_DEL_SERVER:81/ ci apparirà una schermata simile a questa:

Le credenziali predefinite sono le seguenti:
Email: **[email protected]**
Password: **changeme**
Configurazione di Nginx Proxy Manager
Effettuato l’accesso ci verrà chiesto subito di cambiare la password principale, procediamo creando una password forte, una volta fatto ciò ci ritroveremo una schermata simile a questa:

Quello che dobbiamo andare a fare noi adesso è far puntare tutto il traffico “**.dominio.com*” all’indirizzo IP del server dove si trova NPM.
In questa guida io utilizzerò Cloudflare potrebbe cambiare in base al Vs. provider del dominio, in ogni caso quello che dobbiamo fare noi è registrare un dominio di tipo “A” “*.dominio.com” che punti all’indirizzo IP del nostro server:

Creato con successo il routing torniamo su NPM e registriamo il nostro primo “subdomain”, per farlo rechiamoci nella sezione Proxy Host, successivamente clicchiamo sulla voce Add Proxy Host e completiamo le voci così come in questo esempio:
- Domain Names: nginx.dominio.com
- Scheme: http (perché in questo esempio il servizio è esposto sullo schema http)
- Forward Hostname / IP: dobbiamo inserire l’indirizzo IP del nostro server, oppure 127.0.0.1
- Forward Port: dobbiamo inserire la porta nella quale è esposto il servizio in questo caso 81
- Spuntiamo le caselle Cache Assets, Block Common Exploits** e Websockets Support

Successivamente rechiamoci nella sezione SSL e nella casella SSL Certificate clicchiamo sulla voce Request a new SSL Certificate, successivamente tutte le voci Force SSL, HTTP/2 Support, HSTS Enabled e HSTS Subdomains, inseriamo un indirizzo email per i certificato Let’s Encrypt ed accettiamo termini e condizioni e clicchiamo su “Save”:

A questo punto collegandoci su https://nginx.dominio.com saremo in grado di collegarci al nostro nginx proxy manager con connessione sicura HTTPS.
Adesso torniamo nel nostro terminale ed eliminiamo la regola “ufw” impostata prima sulla porta 81/tcp:
| |
Dalla lista cerchiamo la voce con la porta da eliminare e digitiamo:
| |
Certificati SSL Gratuiti con Cloudflare
Se non vogliamo utilizzare Let’s Encrypt si può, in alternativa, generare una coppia di certificati gratuiti con Cloudflare, per farlo andiamo nella pagina principale del nostro dominio su Cloudflare, clicchiamo su SSL/TLS successivamente su Server di origine e su Crea certificato

Lasciamo le impostazioni predefinite e clicchiamo su Crea.
Ci apparirà la pagina con i certificati, “Certificato origine” e “Chiave privata”.

Creiamo due file di testo, uno lo chiameremo certificato.pem e l’altro certificato.key, inseriamo all’interno del file .pem il certificato di origine ed all’interno del file .key la chiave privata, salviamo ed andiamo sulla nostra istanza di nginx proxy manager. Rechiamoci nella sezione SSL Certificates e clicchiamo su Add SSL Certificate successivamente su Custom, inseriamo il nome che desideriamo (es. certificato_dominio), carichiamo su “Certificate Key” il file .key mentre su “Certificate” il file .pem e successivamente Salviamo.

Modifichiamo adesso l’impostazione su Cloudflare di modalità di crittografia SSL/TLS su “Completa”

E siamo apposto, adesso quando creiamo un nuovo host (o vogliamo modificare uno già creato) abbiamo la possibilità di scegliere come certificato questo di Cloudflare con durata 15 anni
