Ciao, e benvenuto nella quarta puntata della trentacinquesima stagione. Nelle scorse puntate abbiamo visto nginx come un portiere efficiente che serve le proprie pagine. Oggi scopriamo il suo ruolo più importante e diffuso, quello per cui, oggi, viene usato più che come semplice web server: fare da porta d'ingresso davanti ad altre applicazioni. È quello che si chiama reverse proxy, un proxy inverso, cioè un intermediario che sta davanti a un'altra applicazione e la protegge, la rappresenta, parla al mondo esterno al posto suo. Oggi capiamo questa idea, che cambia completamente il modo di vedere nginx.
Partiamo dal cambio di prospettiva, perché è importante. Finora abbiamo immaginato nginx come il portiere che custodisce il sito e serve direttamente le sue pagine. Ma c'è un altro modo, oggi il più comune, di usarlo. In questo modo, nginx non custodisce il sito: sta davanti a un'altra applicazione, quella vera, che contiene il sito o il servizio, e fa da intermediario tra il mondo esterno e quella applicazione. Il visitatore non parla più direttamente con l'applicazione vera: parla con nginx, che sta davanti; e nginx, dietro le quinte, si rivolge all'applicazione vera per suo conto. nginx diventa il volto, la porta d'ingresso, il portavoce dell'applicazione che sta dietro.
Voglio spiegarti come funziona, concretamente, questo intermediario, perché è semplice ed elegante. Quando arriva una richiesta, non va all'applicazione vera: arriva a nginx, che sta davanti. nginx la riceve, e la inoltra all'applicazione vera che sta dietro, nascosta. L'applicazione elabora la richiesta e restituisce la risposta a nginx. E nginx, a sua volta, restituisce quella risposta al visitatore. Il visitatore ha parlato solo con nginx, senza mai vedere né toccare l'applicazione vera dietro. nginx ha fatto da tramite, da messaggero, in mezzo: riceve dal fuori, gira al dentro, riprende la risposta, e la ridà al fuori. È un intermediario che sta al confine, tra il mondo esterno e l'applicazione protetta dietro.
Voglio darti l'immagine che rende chiara questa idea, perché la conosci bene: il receptionist davanti agli uffici. Immagina un'azienda con i suoi uffici, dove si svolge il lavoro vero. Davanti, all'ingresso, c'è un receptionist. Tu, visitatore, non entri direttamente negli uffici e non parli con chi ci lavora: parli con il receptionist, che sta davanti. Gli dici cosa ti serve; lui si occupa di girare la tua richiesta a chi di dovere dentro, e ti riporta la risposta. Chi lavora dentro resta protetto, nascosto, libero di concentrarsi sul proprio lavoro, mentre il receptionist gestisce il contatto con l'esterno. nginx, come reverse proxy, è esattamente questo receptionist: sta davanti, riceve, gira dentro, riporta fuori, e protegge chi lavora dietro.
Voglio farti apprezzare perché questa disposizione sia così utile e potente, perché è il punto di tutto. Mettere nginx davanti all'applicazione vera porta grandi vantaggi. Primo: l'applicazione dietro può restare semplice e concentrata sul suo lavoro, cioè la sua logica, il suo contenuto, senza doversi occupare di tutti i compiti del confine con l'esterno, che se ne occupa nginx. Secondo: l'applicazione dietro resta nascosta e protetta, non esposta direttamente al mondo; il mondo vede solo nginx, robusto ed efficiente, che fa da scudo. Terzo: nginx, essendo velocissimo ed efficiente, gestisce il contatto con l'esterno molto meglio di quanto farebbe l'applicazione. Metti davanti il portiere efficiente, e lasci l'applicazione libera di fare il suo mestiere, protetta e semplice.
Voglio farti apprezzare quanto questa idea sia centrale nel web di oggi, perché è ovunque. Oggi, un'enorme quantità di siti e servizi è costruita così: l'applicazione vera, magari scritta in un qualsiasi linguaggio, sta dietro, e davanti c'è nginx a fare da porta d'ingresso. È diventato lo schema standard: l'applicazione fa il suo lavoro, nascosta e semplice, e nginx sta davanti, esposto al mondo, a ricevere, proteggere, smistare. Chi costruisce servizi in rete conosce bene questa disposizione: nginx davanti, l'applicazione dietro. È talmente comune che, spesso, il ruolo principale di nginx oggi non è servire pagine sue, ma fare da porta d'ingresso davanti a qualcos'altro. È il portiere universale del web moderno.
Voglio anticiparti perché questa posizione al confine sia così ricca, perché apre le prossime puntate. Una volta che nginx sta davanti, alla porta, diventa il punto naturale in cui gestire tanti compiti che riguardano il confine con l'esterno. Può distribuire le richieste tra più applicazioni, per reggere più traffico. Può occuparsi della sicurezza della connessione. Può ricordare le risposte per servirle più in fretta. Può proteggere da abusi e sovraccarichi. Tutti questi compiti di confine si concentrano naturalmente nella porta d'ingresso, in nginx, e li vedremo nelle prossime puntate. La posizione al confine non serve solo a proteggere: è il posto ideale per farsi carico di tutti gli affari che avvengono tra il mondo e l'applicazione.
Per oggi ci fermiamo qui. Il ruolo più importante di nginx oggi è fare da porta d'ingresso davanti ad altre applicazioni: il reverse proxy, un intermediario che sta al confine tra il mondo esterno e l'applicazione vera. Il visitatore parla solo con nginx, che riceve la richiesta, la gira all'applicazione nascosta dietro, ne riprende la risposta, e la ridà al visitatore, come un receptionist davanti agli uffici. Così l'applicazione dietro resta semplice, protetta e concentrata sul suo lavoro, mentre nginx, efficiente e robusto, gestisce il contatto con l'esterno. È lo schema standard del web di oggi. E la posizione al confine apre tanti compiti. Nella prossima puntata ne vediamo uno fondamentale: il bilanciamento del carico. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.