Qual è la differenza tra un server proxy e un server proxy inverso?
Qual è la differenza tra un server proxy e un server proxy inverso?
Risposte:
Le risposte precedenti erano accurate, ma forse troppo concise. Proverò ad aggiungere alcuni esempi.
Prima di tutto, la parola "proxy" descrive qualcuno o qualcosa che agisce per conto di qualcun altro.
Nel regno dei computer, stiamo parlando di un server che agisce per conto di un altro computer.
Ai fini dell'accessibilità, limiterò la mia discussione ai proxy Web, tuttavia l'idea di un proxy non si limita ai siti Web.
La maggior parte delle discussioni sui proxy web si riferisce al tipo di proxy noto come "forward proxy".
L'evento proxy, in questo caso, è che il "proxy inoltro" recupera i dati da un altro sito Web per conto del richiedente originale.
Per un esempio, elencherò tre computer collegati a Internet.
Normalmente, ci si connette direttamente da X --> Z.
Tuttavia, in alcuni scenari, è meglio per Y --> Z
conto di X
, che catene come segue: X --> Y --> Z
.
Ecco un elenco (molto) parziale di usi di un server proxy forward:
1) X non è in grado di accedere direttamente a Z perché
a) Qualcuno con autorità amministrativa sulla X
connessione Internet ha deciso di bloccare tutti gli accessi al sito Z
.
Esempi:
Il virus Storm Worm si sta diffondendo inducendo le persone a visitare familypostcards2008.com
, quindi l'amministratore di sistema ha bloccato l'accesso al sito per impedire agli utenti di infettarsi inavvertitamente.
I dipendenti di una grande azienda hanno perso troppo tempo facebook.com
, quindi la direzione vuole che l'accesso sia bloccato durante l'orario di lavoro.
Una scuola elementare locale non consente l'accesso a Internet al playboy.com
sito Web.
Un governo non è in grado di controllare la pubblicazione di notizie, quindi controlla l'accesso alle notizie, bloccando siti come wikipedia.org
. Vedi TOR o FreeNet .
b) L'amministratore di Z
ha bloccato X
.
Esempi:
L'amministratore di Z ha notato tentativi di hacking provenienti da X, quindi l'amministratore ha deciso di bloccare l'indirizzo IP di X (e / o netrange).
Z è un sito Web del forum. X
sta inviando spam al forum. Z blocca X.
Per questo esempio, elencherò tre computer collegati a Internet.
Normalmente, ci si connette direttamente da X --> Z.
Tuttavia, in alcuni scenari, è meglio per l'amministratore Z
limitare o vietare l'accesso diretto e forzare i visitatori a passare prima attraverso Y. Quindi, come prima, abbiamo dati che vengono recuperati dal Y --> Z
conto di X
, che catene come segue: X --> Y --> Z
.
Ciò che è diverso questa volta rispetto a un "proxy inoltro", è che questa volta l'utente X
non sa che sta accedendo Z
, perché l'utente X
vede solo che sta comunicando Y
. Il server Z
è invisibile ai client e solo il proxy inverso Y
è visibile esternamente. Un proxy inverso non richiede alcuna configurazione (proxy) sul lato client.
Il cliente X
pensa di comunicare solo con Y
( X --> Y
), ma la realtà è che Y
inoltra tutte le comunicazioni (di X --> Y --> Z
nuovo).
Negli scenari sopra, Z
ha la possibilità di scegliere Y
.
(X --> Y) --> Z
, inverso: X --> (Y --> Z)
.
Una coppia di definizioni semplici sarebbe:
Proxy diretto: agire per conto di un richiedente (o consumatore del servizio)
Proxy inverso: agire per conto del produttore di servizi / contenuti.
Ho trovato il diagramma di seguito molto utile. Mostra solo l'architettura di un'impostazione del proxy in avanti o inversa dal client al server su Internet. Questa immagine ti aiuterà a capire meglio la risposta di qyb2zm302 e altre risposte.
È inoltre possibile guardare il video da F5 s' DevCentral da Peter Silva.
Fonte immagine: Quora . Tuttavia, secondo Martijn Pieters , questa immagine potrebbe essere tratta dal sito Pulse Secure Community o dal sito di Julien Pauli (in francese) su developpez.com.
Mi ha ricordato il classico proverbio:
Un'immagine vale più di 1000 parole.
Forward Proxy vs. Reverse Proxy (2012) spiega chiaramente la differenza tra i proxy forward e reverse.
la risposta di qyb2zm302 dettagliatamente le applicazioni dei proxy, ma scivola sul concetto fondamentale tra proxy forward e reverse. Per il proxy inverso, X → Y → Z, X conosce Y e non Z, piuttosto che viceversa.
Un proxy è semplicemente un intermediario per la comunicazione (richieste + risposte). Client <-> Proxy <-> Server
Il proxy agisce per conto del client. Il cliente conosce tutte e tre le macchine coinvolte nella catena. Il server no.
Il proxy agisce per conto del server. Il client conosce solo il proxy. Il server conosce l'intera catena.
Mi sembra che avanti e indietro siano semplicemente nomi confusi e dipendenti dalla prospettiva per client e server proxy . Suggerisco di abbandonare il primo per il secondo, per una comunicazione esplicita.
Naturalmente, per complicare ulteriormente la questione, non tutte le macchine sono esclusivamente client o server. Se c'è un'ambiguità nel contesto, è meglio specificare esplicitamente dove si trova il proxy e le comunicazioni che tunnel.
Alcuni diagrammi potrebbero aiutare:
Proxy diretto
Proxy inverso
La differenza sta principalmente nella distribuzione. I proxy Web forward e reverse hanno tutti le stesse funzionalità di base. Accettano richieste di richieste HTTP in vari formati e forniscono una risposta, in genere accedendo al server di origine o di contatto.
I server con funzionalità complete di solito dispongono di controllo degli accessi, memorizzazione nella cache e alcune funzionalità di mappatura dei collegamenti.
Un proxy forward è un proxy a cui si accede configurando il computer client. Il client necessita del supporto del protocollo per le funzionalità proxy (reindirizzamento, autenticazione proxy, ecc.). Il proxy è trasparente per l'esperienza dell'utente, ma non per l'applicazione.
Un proxy inverso è un proxy che viene distribuito come server Web e si comporta come un server Web, con l'eccezione che invece di comporre localmente il contenuto da programmi e disco, inoltra la richiesta a un server di origine. Dal punto di vista del client è un server Web, quindi l'esperienza dell'utente è completamente trasparente.
In effetti, una singola istanza proxy può essere eseguita contemporaneamente come proxy forward e reverse per popolazioni client diverse.
Proxy: sta effettuando la richiesta per conto del client . Pertanto, il server restituirà la risposta al proxy e il proxy inoltrerà la risposta al client. In effetti, il server non "apprenderà" mai chi era il client (l'indirizzo IP del client); conoscerà solo il proxy. Tuttavia, il client conosce sicuramente il server, dal momento che formatta essenzialmente la richiesta HTTP destinata al server, ma lo passa semplicemente al proxy.
Proxy inverso: sta ricevendo la richiesta per conto del server . Inoltra la richiesta al server, riceve la risposta e quindi restituisce la risposta al client. In questo caso, il client non "imparerà" mai chi era il server effettivo (l'indirizzo IP del server) (con alcune eccezioni); conoscerà solo il proxy. Il server saprà o non conoscerà il client effettivo, a seconda delle configurazioni del proxy inverso.
La migliore spiegazione è qui con i diagrammi:
Mentre un proxy inoltro esegue il proxy per conto dei client ( o richiede host ) , un proxy inverso esegue il proxy per conto dei server.
In effetti, mentre un proxy forward nasconde le identità dei client, un proxy inverso nasconde le identità dei server.
Un server proxy inoltra (e facoltativamente memorizza nella cache) richieste di rete in uscita verso varie risorse pubbliche non necessariamente correlate su Internet. Un proxy inverso acquisisce (e facoltativamente memorizza nella cache) le richieste in arrivo da Internet e le distribuisce a varie risorse private interne, di solito per scopi di alta disponibilità.
Cloudflare ha un ottimo articolo con immagini che lo spiegano nei dettagli.
Controlla qui: che cos'è un proxy inverso? | Spiegazione dei server proxy
Proxy (Forward Proxy):
Quando i computer della LAN si connettono a un server proxy che accede a Internet. I vantaggi includono solo il server esposto a Internet. Le persone esterne non sono in grado di accedere direttamente ai computer. I proxy forward possono migliorare l'accesso a Internet per gli utenti memorizzando nella cache i download. Possono anche essere utilizzati per limitare l'accesso a determinati siti. Inoltre, solo il server proxy avrebbe bisogno di un indirizzo pubblico, non dei client che si connettono ad esso.
Proxy inverso:
Un proxy inverso è l'opposto di un proxy forward. Invece funge da proxy per conto dei server a cui è collegato. Invece di accedere direttamente a un server remoto, un utente passerebbe attraverso il proxy inverso e da lì verrebbe indirizzato al server appropriato. Solo il proxy inverso avrebbe bisogno di un certificato SSL, sarebbe necessario un solo indirizzo IP pubblico e può gestire il bilanciamento del carico delle richieste in arrivo per migliorare l'esperienza utente complessiva.
Origine immagine: creazione di un proxy diretto mediante il routing delle richieste dell'applicazione
La mia comprensione dal punto di vista di Apache è che il proxy significa che se il sito x proxy per il sito y, quindi le richieste per x restituiscono y.
Il proxy inverso indica che la risposta di y viene regolata in modo tale che tutti i riferimenti a y diventino x.
In modo che l'utente non possa dire che è coinvolto un proxy ...
Secondo la mia comprensione ...
Per cominciare, come tutti sanno, proxy significa "l'autorità di rappresentare qualcun altro". Ora ci sono due cose, forward e reverse proxy.
Supponiamo che tu voglia accedere a "Google" e "Google" a loro volta avranno n numero di server per rispondere a quella particolare richiesta.
Ora in questo caso, mentre richiedi qualcosa a Google e non vuoi che Google veda il tuo indirizzo IP, utilizzerai un proxy di inoltro, come spiegato di seguito.
A → B → C
Ora eccoti A, che invia una richiesta tramite B. Quindi C penserà che la richiesta provenga da B, non da A. In questo modo puoi impedire che l'indirizzo IP dei tuoi clienti non sia esposto al mondo esterno.
Ora in questo caso, per farti capire, prenderemo lo stesso caso di proxy forward. Qui hai richiesto qualcosa a Google, che a sua volta ha intenzione di inviare una richiesta all'app server o un altro server proxy per ottenere la risposta. Quindi queste cose accadranno come spiegato di seguito.
A → B → C
C → D
C ← D
A ← B ← C
Dal diagramma sopra puoi vedere che una richiesta è stata inviata a C da B, non da A. Quindi da C ci sarà una richiesta inviata a D. Allo stesso modo la risposta andrà a C da D e poi a B e A.
Il diagramma sopra dice che è solo il contesto che conta, sebbene entrambi i proxy agiscano allo stesso modo, ma il proxy sul lato client nasconde le informazioni sul client mentre il proxy sul lato server nasconderà le informazioni sul lato server.
I proxy forward garantiscono l'anonimato del cliente (vale a dire, pensa Tor ).
I proxy inversi garantiscono l'anonimato dei server back-end (vale a dire, pensa ai server dietro una DMZ).
Ecco un esempio di proxy inverso (come bilanciamento del carico).
Un client naviga su website.com e il server colpito ha un proxy inverso in esecuzione su di esso. Il proxy inverso sembra essere Pound . Pound accetta la richiesta e la invia a uno dei tre server applicazioni dietro di essa. In questo esempio, Pound è un bilanciamento del carico. Cioè, sta bilanciando il carico tra tre server applicazioni.
I server delle applicazioni forniscono il contenuto del sito Web al client.
Se nessun proxy
Per vedere dal lato client e lato server sono gli stessi:
Client -> Server
delega
Dal lato client:
Client -> proxy -> Server
Dal lato server:
Client -> Server
Proxy inverso
Dal lato client:
Client -> Server
Dal lato server:
Client -> proxy -> Server
Quindi penso che se impostato da un utente client , si chiama proxy ; se impostato da un server manager è un proxy inverso.
Poiché gli scopi e le ragioni per configurarlo sono diversi, gestiscono i dati in modi diversi e utilizzano software diversi.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Guardando dal punto di vista dell'utente: quando si invia una richiesta a un proxy o a un server proxy inverso :
proxy - richiede due argomenti :
1) cosa ottenere e 2) quale server proxy utilizzare un intermedio
proxy inverso - richiede un argomento :
1) cosa ottenere
Un proxy inverso recupera i contenuti da un altro server all'insaputa dell'utente e restituisce il risultato come se fosse originato dal server proxy inverso .
La maggior parte delle risposte precedenti sono buone, ma secondo me nessuna è molto vicina ad affrontare abbastanza bene la qualità "inversa" che differenzia le due. Per fare ciò, è necessario fornire un modo per visualizzare la natura "inversa" di ciò che è essenzialmente la stessa cosa (un proxy) e deve essere data in modo ben astratto.
Un proxy (implicitamente "forward proxy") collega più client locali a un singolo server remoto:
c--
|--p--s
c--
Un proxy inverso collega più server locali a qualsiasi client remoto (notare come si inverte il layout):
s--
|--p--c
s--
È una questione di prospettiva comprendere veramente e correttamente il concetto richiede di sottrarre dettagli non essenziali (al particolare concetto) sebbene possano essere molto importanti quando si tratta della pragmatica dell'operazione di procura. Tali dettagli includono il fatto che in entrambi gli scenari la realtà è che più client si connettono a più server, che client e server potrebbero non essere realmente locali o remoti, dove si trova il cloud Internet o che tipo di visibilità esiste tra client e server.