
Nginx: Reverse Proxy per Protezione e Performance
Nessuna delle nostre applicazioni — RAG Enterprise, CRM81, LetsAI — è esposta direttamente a internet. Nginx è il guardiano che sta davanti a tutto: termina SSL, comprime le risposte, limita il traffico e inoltra le richieste ai backend. Ecco come lo configuriamo in produzione.

SSL Termination e Let's Encrypt: HTTPS Senza Compromessi
Ogni deploy on-premise di RAG Enterprise ha un dominio dedicato del cliente (es. rag.azienda.it) con certificato SSL gratuito tramite Let's Encrypt e Certbot. Nginx gestisce la terminazione SSL, quindi il backend FastAPI riceve traffico in chiaro su localhost:8000 senza mai essere esposto direttamente. Questo semplifica enormemente la configurazione del backend. La nostra configurazione SSL segue le best practice Mozilla "Modern": TLS 1.3 obbligatorio, cipher suite ristrette (TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256), HSTS con max-age di un anno, e OCSP stapling abilitato. Il risultato è un punteggio A+ su SSL Labs per ogni installazione. Non è vanità — i clienti del settore bancario e legale lo richiedono contrattualmente. Certbot rinnova automaticamente i certificati 30 giorni prima della scadenza con un timer systemd. In 2 anni di deploy non abbiamo mai avuto un certificato scaduto. Il reload di Nginx dopo il rinnovo è zero-downtime grazie al comando nginx -s reload che non interrompe le connessioni attive.
Rate Limiting, Gzip e Ottimizzazione delle Performance
Un sistema RAG Enterprise riceve richieste pesanti: ogni query può generare risposte di 2-5 KB di testo, e l'indicizzazione di documenti può inviare file da diversi megabyte. Senza rate limiting, un singolo utente potrebbe saturare l'LLM con richieste continue. La nostra configurazione Nginx impone un limite di 10 richieste al secondo per IP sull'endpoint /api/query con burst di 20, e 2 richieste al minuto sull'endpoint /api/upload per prevenire abusi. La compressione gzip è abilitata per tutti i content type testuali (application/json, text/html, text/plain) con livello 6, che offre il miglior rapporto compressione/CPU. Le risposte JSON del nostro RAG, che possono includere citazioni estese dai documenti, si comprimono mediamente del 75%. Su una connessione enterprise tipica questo significa 200ms in meno di latenza percepita. Abbiamo anche configurato il caching di Nginx per le risorse statiche del frontend React. I file JS/CSS con hash nel nome vengono serviti con Cache-Control: max-age=31536000 (un anno). Le risposte API non vengono mai cachate — ogni query RAG deve essere fresca. Il proxy_buffering è disabilitato per gli endpoint di streaming SSE, così le risposte dell'IA arrivano token per token senza buffering.
WebSocket Proxying e Configurazione Multi-Servizio
RAG Enterprise PRO usa Server-Sent Events per lo streaming delle risposte, ma CRM81 richiede WebSocket bidirezionali per le notifiche in tempo reale e la chat integrata. Nginx gestisce entrambi i protocolli sullo stesso dominio con location block separati. Per i WebSocket la configurazione è proxy_set_header Upgrade $http_upgrade e proxy_set_header Connection "upgrade", con un proxy_read_timeout di 3600 secondi per mantenere le connessioni aperte. Su installazioni più complesse, dove il cliente vuole RAG Enterprise e CRM81 sullo stesso server, usiamo Nginx come router applicativo. Il path /rag/ viene inoltrato a localhost:8000 (FastAPI), /crm/ a localhost:3000 (Node.js), e il frontend React viene servito direttamente da Nginx come file statici. Un singolo server, un singolo dominio, un singolo certificato SSL. Per i clienti con esigenze di alta disponibilità, configuriamo Nginx come load balancer con upstream block e health check attivi. Due istanze del backend su porte diverse (8000 e 8001), con Nginx che distribuisce il traffico e rimuove automaticamente il backend non responsivo. Il failover avviene in meno di 5 secondi e il cliente non nota nulla. Questa configurazione ci ha permesso di fare aggiornamenti zero-downtime anche su deploy on-premise.
Interessato?
Contattaci per ricevere un preventivo personalizzato.
Securvita S.r.l. — i3k.eu