Proxy e reverse proxy: spiegato usando la vita di uno studente.

Jan 03 2023
Se sei stato in giro su Internet, devi esserti imbattuto nel termine proxy e proxy inverso. Anche se non hai sentito il termine dal punto di vista tecnico, potresti aver sentito studenti universitari chiedere ai loro amici di frequentare le lezioni e rispondere alla frequenza per loro conto, riferendosi ad essa come presenza per delega.

Se sei stato in giro su Internet, devi esserti imbattuto nel termine proxy e proxy inverso. Anche se non hai sentito il termine dal punto di vista tecnico, potresti aver sentito studenti universitari chiedere ai loro amici di frequentare le lezioni e rispondere alla frequenza per loro conto, riferendosi ad essa come presenza per procura.

In questo articolo, discutiamo cosa sono proxy e proxy inverso da un punto di vista tecnico prendendo l'esempio del nostro studente proxy riconoscibile. Tieni presente che gli esempi discussi in questo articolo sono moralmente sbagliati e sono solo a scopo esplicativo. Applicarli nella vita reale non è raccomandato xD

Cos'è il proxy?

Un proxy è un middleware tra il client e il server. Se un proxy è abilitato, quando un client fa una richiesta a un server, la richiesta raggiunge prima il proxy e poi il proxy fa la richiesta al server per conto del client. Il server non è a conoscenza del client effettivo e ha solo informazioni sul proxy.

Supponiamo che tu sia iscritto ad un corso ma che per qualche motivo non puoi frequentarlo, e quindi chiedi ad un tuo amico di dare la tua presenza al corso. Per il professore la risposta all'appello è arrivata dal tuo amico e quindi il professore non ha informazioni su di te.

Perché utilizzare Proxy?

  1. Anonimato: il proxy può essere utilizzato per mantenere un certo grado di anonimato. Il server non avrà informazioni sul client effettivo, tuttavia ricorda che il proxy è solo un trasferimento di identità piuttosto che la sua rimozione. Anche se il server non è a conoscenza del client, il proxy conserva comunque informazioni su di te. Ad esempio: anche se il professore non ti conosce, il tuo amico conosce la tua identità.
  2. Caching: se più client effettuano le stesse richieste al server e tutte le richieste passano attraverso il proxy, il proxy può memorizzare nella cache la risposta di tale richiesta e servirla a tutti i client senza effettuare una richiesta al server effettivo. Ad esempio: se a tutti i tuoi amici è stato assegnato lo stesso compito, l'amico delegato può farlo e farlo correggere dal professore. Gli altri compagni di classe possono quindi copiare i compiti graduati senza andare dal professore uno per uno.
  3. Registrazione: il server proxy può tenere traccia degli endpoint più richiesti sul server, oltre a tenere traccia delle informazioni e delle risposte richieste che possono essere utilizzate per l'analisi statistica. Ad esempio: il tuo amico proxy sa quali classi frequenti di meno e di più, oltre a tenere traccia dei professori e del loro comportamento. Sarebbe utile sapere in anticipo se un particolare professore sta diventando sospettoso dei tuoi imbrogli per procura.
  4. Blocco: i proxy sono notoriamente utilizzati nei luoghi di lavoro e negli istituti scolastici per limitare l'accesso a determinati contenuti. Quando effettui una richiesta a un server che si trova nell'elenco proibito, il proxy blocca la richiesta e la registra anche in modo che possa essere esaminata dall'amministratore del tuo posto di lavoro o dal capo dell'istituto. Ad esempio: il tuo amico non sarebbe d'accordo a fungere da tuo sostituto se il professore è troppo severo o se ci sono gravi conseguenze per le tue azioni. La tua unica opzione sarebbe quella di frequentare tu stesso la lezione, ovvero disabilitare il proxy.
  5. Aggiornamento del protocollo: la maggior parte dei browser non è compatibile con HTTP/2 e pertanto utilizza HTTP/1.1 per effettuare richieste al server. Questo a volte è inefficiente poiché HTTP/2 è più veloce per determinati casi d'uso e fornisce anche la compatibilità gRPC. Un proxy può circumnavigare questo prendendo la tua richiesta HTTP/1.1 e quindi aggiornando il protocollo a HTTP/2 tra se stesso e il server. Ad esempio: il tuo amico potrebbe essere più bravo di te nel corteggiare i professori e portare a termine il lavoro più velocemente a causa della sua reputazione o manierismo (qualità innate) e quindi puoi chiedere loro di parlare con il professore in modo rozzo (visto che siete amici) e poi possono inoltrare il tuo messaggio al professore in modo professionale.

Proprio come i cattivi amici, esistono anche cattivi proxy. Possono essere responsabili dell'inoltro della tua richiesta a server dannosi che causano un attacco DoS. Alcuni proxy eseguono anche la terminazione TLS, che li porta ad accedere a qualsiasi informazione sensibile che potresti aver trasmesso nella richiesta iniziale. Pertanto si consiglia sempre di verificare se il proxy dispone di un certificato TLS valido e se sta terminando TLS o meno.

Delega

Cos'è il proxy inverso?

Supponiamo che tu faccia una richiesta per acquistare un articolo da un negozio online. Per te (il cliente), la richiesta è semplice come raggiungere un endpoint come xyz.com/buy e quindi attendere la conferma dell'ordine. Tuttavia, per xyz.com, la richiesta potrebbe passare attraverso più server diversi responsabili dell'elaborazione della richiesta. Ci sono passaggi come l'autenticazione, l'autorizzazione, il controllo dell'inventario, la conferma del pagamento, ecc. Inoltre, se si tratta di un sistema distribuito, il client non sa quale istanza di xyz.com ha effettivamente ricevuto la richiesta.

In un proxy, il server non ha informazioni sul client originale e in un proxy inverso il client non ha idea del server. La sua unica responsabilità è parlare con il proxy inverso, e poi il proxy inverso fa il resto.

Continuando con il nostro esempio, diciamo che hai dato un test e alla fine, la tua unica responsabilità è quella di inviare il foglio delle risposte al supervisore. Non hai idea di dove vadano i fogli dall'aula d'esame, quale mezzo di trasporto viene utilizzato per trasportare i fogli, quale professore valuta il foglio, quale amministratore verifica la correzione e così via.

Perché utilizzare il proxy inverso?

  1. Bilanciamento del carico: il bilanciamento del carico è utile per distribuire il carico tra i server che gestiscono le richieste del client. Un proxy inverso può distribuire le richieste tra le istanze del server in base alle regole di bilanciamento del carico configurate su di esso. (leggi di più sulle regole qui ) Es.: Il sorvegliante raggruppa i fogli delle risposte in fasci in base al numero del foglio delle risposte/argomento e quindi invia i fasci ai professori pre-assegnati per la correzione. Fogli per la stessa materia possono essere corretti da diversi professori di quella materia, alleggerendo il carico su un particolare professore.
  2. Caching: proprio come un proxy, un proxy inverso può anche memorizzare nella cache le risposte per più stesse richieste ricevute. Ad esempio: se una chiave di risposta viene generata una volta, tutti i fogli delle risposte possono essere controllati in un unico posto molto rapidamente senza la necessità di inviarli a diversi professori in luoghi diversi.
  3. Distribuzioni canary: la distribuzione canary si riferisce al test di nuove funzionalità di un'applicazione con un piccolo sottoinsieme della base di utenti prima di rilasciarla per tutti. È il motivo per cui alcuni dei tuoi amici ricevono le nuove funzionalità di Instagram prima o dopo di te. Un proxy inverso può essere utilizzato per incanalare una piccola percentuale delle richieste in entrata a un'istanza del server che risponde con la nuova versione aggiornata. Per esempio:Alcuni batch nell'università potrebbero avere un rendimento scarso rispetto agli altri batch, quindi i loro fogli di risposta potrebbero essere inviati a un diverso gruppo di professori che analizzino i fogli in modo più preciso per rilevare eventuali carenze e ottenere feedback sul processo di apprendimento/insegnamento. Tuttavia gli studenti non sanno quali professori fanno parte di questo gruppo speciale o in primo luogo dell'esistenza di un gruppo speciale.

Connettiti con me su LinkedIn e contattami su Twitter . Salute!✌️