Più servizi dietro un solo server con Nginx Proxy Manager
Se su un unico server girano più progetti, prima o poi ci si scontra con le porte 80 e 443, che può ascoltare un solo processo. Un articolo di Habr, dal blog di Selectel, mostra passo dopo passo come risolvere il problema con Nginx Proxy Manager.
L'autore spiega prima il problema: le porte privilegiate, la regola di un solo ascoltatore per porta, i problemi di CORS quando frontend e backend sono separati per porta e l'assenza di HTTPS. Un reverse proxy risolve tutto facendo da intermediario e instradando il traffico in base a dominio e percorso. Un vantaggio in più: il firewall deve avere aperte solo le porte 22, 80 e 443.
L'ambiente di prova è un VDS con 2 vCPU, 2 GB di RAM e 40 GB NVMe, con Ubuntu 24.04 e Docker dal repository ufficiale. La rete viene creata con docker network create proxy, poi si avvia il contenitore jc21/nginx-proxy-manager con volumi per dati e certificati. Mi è piaciuto che il pannello di amministrazione sulla porta 81 sia legato solo a 127.0.0.1 e si raggiunga tramite tunnel SSH.
Successivamente si configura un host proxy: nel campo Forward Hostname va il nome del contenitore, e il certificato SSL si collega dalla scheda SSL. Per i test si usa traefik/whoami. È trattato anche il caso in cui l'applicazione giri direttamente sull'host: l'indirizzo del gateway della rete Docker si ottiene con docker network inspect, e il firewall si configura in modo che non si possa raggiungere l'applicazione aggirando il proxy.
Ci sono anche alcune riserve. Gli esempi mescolano domini diversi e l'immagine usa il tag latest, il che può compromettere la riproducibilità nel tempo. Resta comunque un buon punto di partenza per chi vuole gestire più servizi in casa o su un VDS senza modificare a mano le configurazioni di nginx.
Fonte: Habr (blog di Selectel)
L'autore spiega prima il problema: le porte privilegiate, la regola di un solo ascoltatore per porta, i problemi di CORS quando frontend e backend sono separati per porta e l'assenza di HTTPS. Un reverse proxy risolve tutto facendo da intermediario e instradando il traffico in base a dominio e percorso. Un vantaggio in più: il firewall deve avere aperte solo le porte 22, 80 e 443.
L'ambiente di prova è un VDS con 2 vCPU, 2 GB di RAM e 40 GB NVMe, con Ubuntu 24.04 e Docker dal repository ufficiale. La rete viene creata con docker network create proxy, poi si avvia il contenitore jc21/nginx-proxy-manager con volumi per dati e certificati. Mi è piaciuto che il pannello di amministrazione sulla porta 81 sia legato solo a 127.0.0.1 e si raggiunga tramite tunnel SSH.
Successivamente si configura un host proxy: nel campo Forward Hostname va il nome del contenitore, e il certificato SSL si collega dalla scheda SSL. Per i test si usa traefik/whoami. È trattato anche il caso in cui l'applicazione giri direttamente sull'host: l'indirizzo del gateway della rete Docker si ottiene con docker network inspect, e il firewall si configura in modo che non si possa raggiungere l'applicazione aggirando il proxy.
Ci sono anche alcune riserve. Gli esempi mescolano domini diversi e l'immagine usa il tag latest, il che può compromettere la riproducibilità nel tempo. Resta comunque un buon punto di partenza per chi vuole gestire più servizi in casa o su un VDS senza modificare a mano le configurazioni di nginx.
Fonte: Habr (blog di Selectel)
Commenti 0
Lascia il primo commento, in qualsiasi lingua.
Accedi per commentare