Guida completa alla creazione di un proxy inverso Nginx sicuro

Guida completa alla creazione di un proxy inverso Nginx sicuro

Creare un proxy inverso sicuro, affidabile e scalabile è fondamentale per aziende e professionisti IT che gestiscono siti web ad alto traffico o applicazioni complesse. Nginx, un server web open source e proxy inverso, è una soluzione potente per il routing, l'ottimizzazione e la protezione del traffico verso i servizi backend. In questa guida, illustreremo il processo di configurazione di un proxy inverso affidabile utilizzando Nginx su Ubuntu 24.04, affrontando passaggi critici come la crittografia TLS, la limitazione della velocità e l'integrazione con Cloudflare.

Se gestisci siti web aziendali, piattaforme di e-commerce o server multimediali, questa guida ti aiuterà a migliorare le prestazioni, garantire tempi di attività e proteggere la tua infrastruttura dalle vulnerabilità.

Che cos'è un proxy inverso Nginx?

Un reverse proxy Nginx funge da server intermediario tra client e servizi backend. Inoltra le richieste client al server backend appropriato, ottimizzando la distribuzione del carico, migliorando la sicurezza e abilitando funzionalità come la memorizzazione nella cache, la terminazione SSL e il filtraggio del traffico. Questa configurazione è particolarmente utile per l'hosting di server multimediali, applicazioni multi-sito e servizi protetti da firewall.

Perché hai bisogno di un proxy inverso

Un proxy inverso offre diversi vantaggi chiave:

  • Sicurezza avanzata: Nasconde gli IP dei server backend e abilita la crittografia tramite TLS/SSL.
  • Bilanciamento del carico: Distribuisce il traffico in modo uniforme su più server backend.
  • Ottimizzazione: Riduce la latenza e migliora l'efficienza delle risorse.
  • scalabilità: Semplifica la gestione di scenari ad alto traffico.
  • Facilità di gestione: Semplifica la configurazione di più servizi backend dietro un dominio unificato.

In questo tutorial mostreremo come:

  • Imposta Nginx come proxy inverso.
  • Proteggi la tua configurazione con i certificati TLS Let's Encrypt.
  • Configura ottimizzazioni avanzate come la limitazione della velocità e l'inoltro delle richieste.
  • Integra Cloudflare per aggirare le restrizioni delle porte ISP.

Passaggio 1: installazione di Nginx e Certbot su Ubuntu 24.04

Aggiorna il tuo sistema

Prima di installare qualsiasi software, assicurati che il tuo sistema sia aggiornato:

sudo apt update && sudo apt upgrade 

Installa Nginx e Certbot

Utilizzare i seguenti comandi per installare Nginx e Certbot con il plugin Nginx:

sudo apt install nginx -y sudo apt install certbot python3-certbot-nginx -y 

Verifica installazione

Verificare che Nginx sia in esecuzione:

sudo systemctl status nginx 

Per testare l'accesso, determina l'indirizzo IP del tuo server:

ip a 

Visita l'indirizzo IP in un browser. Se l'operazione va a buon fine, vedrai la pagina di benvenuto predefinita di Nginx.

Passaggio 2: configurazione delle regole del firewall

Abilita firewall non complicato (UFW)

UFW consente di gestire facilmente le regole del firewall:

sudo ufw consenti 'Nginx Full' sudo ufw consenti OpenSSH sudo ufw abilita 

Controlla lo stato del tuo firewall per assicurarti che siano aperte le porte corrette:

sudo ufw status 

Passaggio 3: impostazione della configurazione del proxy Nginx

Crea file di configurazione personalizzati

Per maggiore flessibilità e sicurezza, utilizza file snippet per memorizzare configurazioni specifiche. Crea i seguenti file:

  1. Intestazioni di sicurezza:
    sudo nano /etc/nginx/snippets/security-headers.conf 
    Definisci le intestazioni di sicurezza per migliorare la protezione:
    add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; 
  2. Impostazioni proxy:
    sudo nano /etc/nginx/snippets/proxy.conf 
    Ottimizza i flussi lunghi ed evita risposte lente:
    proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; 
  3. Limiti di velocità:
    sudo nano /etc/nginx/snippets/rate-limit.conf 
    Attenua le richieste eccessive:
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s; 

Includi frammenti nella configurazione principale

Modifica la configurazione principale di Nginx:

sudo nano /etc/nginx/nginx.conf 

Aggiungere quanto segue sotto http bloccare:

includi /etc/nginx/snippets/*.conf; 

Riavviare Nginx per applicare le modifiche:

sudo systemctl reload nginx 

Passaggio 4: configurazione del proxy inverso per un servizio backend

Creare un host virtuale

Crea un file di configurazione per il tuo servizio backend:

sudo nano /etc/nginx/sites-available/jellyfin 

Esempio di configurazione per un server multimediale Jellyfin:

server { ascolta 80; nome_server jelly.tuodominio.com; posizione / { proxy_pass http://10.10.0.112:8096; include /etc/nginx/snippets/proxy.conf; } } 

Abilita il sito creando un collegamento simbolico:

sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ 

Prova e ricarica Nginx:

sudo nginx -t sudo systemctl reload nginx 

Passaggio 5: protezione del dominio con Let's Encrypt TLS

Per proteggere il tuo dominio, utilizza Let's Encrypt per emettere certificati gratuiti:

sudo certbot --nginx -d gelatina.tuodominio.com 

Certbot configura automaticamente SSL nel file del tuo sito Nginx. Per garantire che i certificati vengano rinnovati automaticamente, verifica che il timer di systemd sia attivo:

sudo systemctl list-timers | grep certbot 

Passaggio 6: integrazione di Cloudflare per ulteriore sicurezza e bypass delle porte ISP

Installa Cloudflared

Cloudflared crea un tunnel sicuro per instradare il traffico attraverso Cloudflare, aggirando le restrizioni dell'ISP sulle porte 80 e 443:

  1. Scarica il .deb pacchetto dalla pagina GitHub di Cloudflare.
  2. Installa il pacchetto:
    sudo dpkg -i cloudflared-version.deb 

Configurare un tunnel

Autenticati con il tuo account Cloudflare:

accesso al tunnel Cloudflared 

Crea un nuovo tunnel:

tunnel cloudflared crea il mio tunnel 

Modifica il file di configurazione di Cloudflare:

sudo nano /etc/cloudflared/config.yml 

Esempio di configurazione:

tunnel: my-tunnel credentials-file: /home/user/.cloudflared/my-tunnel.json ingress: - hostname: jelly.yourdomain.com service: http://localhost:8096 - service: http_status:404 

Avviare e abilitare il servizio tunnel:

sudo systemctl enable cloudflared sudo systemctl start cloudflared 

Punti chiave

  • Proxy inverso Nginx: Essenziale per instradare il traffico in modo sicuro e ottimizzare i servizi backend.
  • Crittografia TLS: Utilizza Let's Encrypt per proteggere i tuoi domini con certificati SSL gratuiti.
  • Regole del firewall: Aprire le porte necessarie per HTTP (80), HTTPS (443) e SSH (22).
  • Ottimizzazione della sicurezza: Implementare intestazioni e limitazioni di velocità per prevenire gli attacchi.
  • Integrazione Cloudflare: Utilizza i tunnel Cloudflared per un hosting sicuro e compatibile con gli ISP.
  • Automazione: I timer di Systemd garantiscono il rinnovo automatico dei certificati SSL.

Conclusione

Configurare un reverse proxy Nginx sicuro richiede attenzione ai dettagli e un'attenta configurazione, ma i risultati valgono ampiamente lo sforzo. Che tu ospiti server multimediali come Jellyfin o gestisca applicazioni aziendali, questa guida ti fornisce gli strumenti e le conoscenze per creare un ambiente altamente sicuro ed efficiente. Con funzionalità come TLS, tunnel Cloudflare e ottimizzazioni avanzate, la tua infrastruttura è pronta per le esigenze moderne.

Fonte: "Smetti di esporre le tue app! Crea un proxy inverso Nginx sicuro!" – KeepItTechie, YouTube, 19 agosto 2025 – https://www.youtube.com/watch?v=MzbhS2S7H_g

Utilizzo: incorporato per riferimento. Brevi citazioni utilizzate per commenti/recensioni.

Post del blog correlati

it_IT