Quelle est la différence entre un serveur proxy et un serveur proxy inverse?
Quelle est la différence entre un serveur proxy et un serveur proxy inverse?
Réponses:
Les réponses précédentes étaient exactes, mais peut-être trop laconiques. J'essaierai d'ajouter quelques exemples.
Tout d'abord, le mot «proxy» décrit quelqu'un ou quelque chose agissant au nom de quelqu'un d'autre.
Dans le domaine informatique, nous parlons d'un serveur agissant au nom d'un autre ordinateur.
À des fins d'accessibilité, je limiterai ma discussion aux proxy Web - cependant, l'idée d'un proxy ne se limite pas aux sites Web.
La plupart des discussions sur les proxy Web font référence au type de proxy appelé «proxy direct».
L'événement proxy, dans ce cas, est que le "proxy direct" récupère les données d'un autre site Web au nom du demandeur d'origine.
Pour un exemple, je vais énumérer trois ordinateurs connectés à Internet.
Normalement, on se connecte directement depuis X --> Z.
Toutefois, dans certains scénarios, il est préférable pour Y --> Z
le compte de X
qui chaînes comme suit: X --> Y --> Z
.
Voici une liste (très) partielle des utilisations d'un serveur proxy direct:
1) X ne peut pas accéder directement à Z car
a) Une personne disposant d'une autorité administrative sur X
la connexion Internet de a décidé de bloquer tout accès au site Z
.
Exemples:
Le virus Storm Worm se propage en incitant les gens à visiter familypostcards2008.com
, de sorte que l'administrateur système a bloqué l'accès au site pour empêcher les utilisateurs de s'infecter par inadvertance.
Les employés d'une grande entreprise perdent trop de temps facebook.com
, la direction veut donc que l'accès soit bloqué pendant les heures de bureau.
Une école primaire locale interdit l'accès Internet au playboy.com
site Web.
Un gouvernement n'est pas en mesure de contrôler la publication des nouvelles, il contrôle donc l'accès aux nouvelles en bloquant des sites tels que wikipedia.org
. Voir TOR ou FreeNet .
b) L'administrateur de Z
a bloqué X
.
Exemples:
L'administrateur de Z a remarqué des tentatives de piratage provenant de X, donc l'administrateur a décidé de bloquer l'adresse IP de X (et / ou la plage réseau).
Z est un site Web de forum. X
spamme le forum. Z bloque X.
Pour cet exemple, je vais répertorier trois ordinateurs connectés à Internet.
Normalement, on se connecte directement depuis X --> Z.
Cependant, dans certains scénarios, il est préférable pour l'administrateur de Z
restreindre ou d'interdire l'accès direct et de forcer les visiteurs à passer par Y en premier. Alors, comme avant, nous avons données récupérées par Y --> Z
le nom X
, qui chaînes comme suit: X --> Y --> Z
.
Ce qui est différent cette fois par rapport à un "proxy direct", c'est que cette fois, l'utilisateur X
ne sait pas qu'il accède Z
, car l'utilisateur X
voit seulement qu'il communique avec Y
. Le serveur Z
est invisible pour les clients et seul le proxy inverse Y
est visible de l'extérieur. Un proxy inverse ne nécessite aucune configuration (proxy) côté client.
Le client X
pense qu'il communique uniquement avec Y
( X --> Y
), mais la réalité est que la Y
transmission de toutes les communications (à X --> Y --> Z
nouveau).
Dans les scénarios ci-dessus, Z
a la possibilité de choisir Y
.
(X --> Y) --> Z
, inverse: X --> (Y --> Z)
.
Une paire de définitions simples serait:
Proxy de transfert: agir au nom d'un demandeur (ou d'un consommateur de services)
Proxy inverse: agir au nom du producteur de services / contenu.
J'ai trouvé le diagramme ci-dessous très utile. Il montre simplement l'architecture d'une configuration de proxy direct ou inverse du client au serveur sur Internet. Cette image vous aidera à mieux comprendre la réponse de qyb2zm302 et d'autres réponses.
Vous pouvez aussi regarder cette vidéo de F5 de DevCentral par Peter Silva.
Source de l'image: Quora . Cependant, selon Martijn Pieters , cette image pourrait provenir de Pulse Secure Community ou du site de Julien Pauli (developpez.com).
Cela m'a rappelé le proverbe classique:
Une image vaut 1000 mots.
Le proxy direct et le proxy inverse (2012) explique très clairement la différence entre les proxy directs et inverses.
La réponse de qyb2zm302 détaille bien les applications des mandataires, mais elle glisse sur le concept fondamental entre les mandataires directs et inversés. Pour le proxy inverse, X → Y → Z, X connaît Y et non Z, plutôt que l'inverse.
Un proxy est simplement un intermédiaire pour la communication (demandes + réponses). Client <-> Proxy <-> Serveur
Le mandataire agit au nom du client. Le client connaît les trois machines impliquées dans la chaîne. Le serveur ne fonctionne pas.
Le proxy agit au nom du serveur. Le client ne connaît que le proxy. Le serveur connaît toute la chaîne.
Il me semble que l' avant et l' arrière sont simplement des noms déroutants et dépendants de la perspective pour le proxy client et serveur . Je suggère d'abandonner le premier pour le second, pour une communication explicite.
Bien sûr, pour compliquer davantage le problème, toutes les machines ne sont pas exclusivement un client ou un serveur. S'il y a une ambiguïté dans le contexte, il est préférable de spécifier explicitement où se trouve le proxy et les communications qu'il tunnelise.
Certains diagrammes pourraient aider:
Proxy de transfert
Proxy inverse
La différence réside principalement dans le déploiement. Les proxys Web Forward et Reverse ont tous les mêmes caractéristiques sous-jacentes. Ils acceptent les demandes de demandes HTTP dans différents formats et fournissent une réponse, généralement en accédant au serveur d'origine ou de contact.
Les serveurs entièrement équipés ont généralement un contrôle d'accès, une mise en cache et certaines fonctionnalités de mappage de liens.
Un proxy direct est un proxy auquel on accède en configurant la machine cliente. Le client a besoin d'un support de protocole pour les fonctionnalités proxy (redirection, authentification proxy, etc.). Le proxy est transparent pour l'expérience utilisateur, mais pas pour l'application.
Un proxy inverse est un proxy qui est déployé en tant que serveur Web et se comporte comme un serveur Web, à l'exception qu'au lieu de composer localement le contenu des programmes et du disque, il transmet la demande à un serveur d'origine. Du point de vue du client, il s'agit d' un serveur Web, donc l'expérience utilisateur est complètement transparente.
En fait, une seule instance de proxy peut s'exécuter en tant que proxy direct et inverse en même temps pour différentes populations de clients.
Proxy: il fait la demande au nom du client . Ainsi, le serveur renverra la réponse au proxy et le proxy transmettra la réponse au client. En fait, le serveur n'apprendra jamais qui était le client (l'adresse IP du client); il ne connaîtra que le proxy. Cependant, le client connaît définitivement le serveur, car il formate essentiellement la requête HTTP destinée au serveur, mais il la remet simplement au proxy.
Proxy inversé: il reçoit la demande au nom du serveur . Il transmet la demande au serveur, reçoit la réponse, puis renvoie la réponse au client. Dans ce cas, le client n'apprendra jamais qui était le serveur réel (l'adresse IP du serveur) (à quelques exceptions près); il ne connaîtra que le proxy. Le serveur connaîtra ou ne connaîtra pas le client réel, selon les configurations du proxy inverse.
La meilleure explication est ici avec des diagrammes:
Tandis qu'un proxy direct procède au nom des clients ( ou des hôtes demandeurs ) , un proxy inverse procède au nom des serveurs.
En effet, alors qu'un proxy direct cache les identités des clients, un proxy inverse cache les identités des serveurs.
Un serveur proxy procède au proxy (et met éventuellement en cache) les requêtes réseau sortantes vers diverses ressources publiques non nécessairement liées sur Internet. Un proxy inverse capture (et met éventuellement en cache) les demandes entrantes provenant d'Internet et les distribue à diverses ressources privées internes, généralement à des fins de haute disponibilité.
Cloudflare a un excellent article avec des images expliquant cela en détail.
Vérifiez ici: Qu'est-ce qu'un proxy inverse? | Explication des serveurs proxy
Proxy (proxy direct):
Lorsque les ordinateurs de votre réseau local se connectent à un serveur proxy qui accède à Internet. Les avantages incluent uniquement le serveur exposé à Internet. Les personnes extérieures ne peuvent pas accéder directement aux ordinateurs. Les proxys de transfert peuvent améliorer l'accès à Internet pour les utilisateurs en mettant en cache les téléchargements. Ils peuvent également être utilisés pour restreindre l'accès à certains sites. De plus, seul le serveur proxy aurait besoin d'une adresse publique, pas les clients qui s'y connectent.
Proxy inverse:
Un proxy inverse est l'opposé d'un proxy direct. Au lieu de cela, il agit comme un proxy au nom des serveurs auxquels il est connecté. Au lieu d'accéder directement à un serveur distant, un utilisateur passerait par le proxy inverse et serait dirigé vers le serveur approprié à partir de là. Seul le proxy inverse aurait besoin d'un certificat SSL, une seule adresse IP publique serait nécessaire et il peut gérer l'équilibrage de charge des demandes entrantes pour améliorer l'expérience utilisateur globale.
Source d'image: création d'un proxy direct à l'aide du routage des demandes d'application
Ma compréhension d'un point de vue Apache est que le proxy signifie que si le site x procède au proxy pour le site y, les demandes de x renvoient y.
Le proxy inverse signifie que la réponse de y est ajustée de sorte que toutes les références à y deviennent x.
Pour que l'utilisateur ne puisse pas dire qu'un proxy est impliqué ...
Selon ma compréhension ...
Pour commencer, comme chacun le sait, proxy signifie «l'autorité de représenter quelqu'un d'autre». Maintenant, il y a deux choses, proxy direct et inverse.
Supposons que vous souhaitiez accéder à "Google" et "Google" à leur tour auront n nombre de serveurs pour répondre à cette demande particulière.
Dans ce cas, alors que vous demandez quelque chose à Google et que vous ne voulez pas que Google voie votre adresse IP, vous utiliserez un proxy direct, comme expliqué ci-dessous.
A → B → C
Maintenant, vous êtes A, envoyant une demande via B. Donc C pensera que la demande vient de B, pas A. De cette façon, vous pouvez empêcher l'adresse IP de vos clients de ne pas être exposée au monde extérieur.
Maintenant, dans ce cas, pour vous faire comprendre, nous prendrons le même cas de proxy direct. Ici, vous avez demandé quelque chose à Google, qui à son tour va envoyer la demande au serveur d'application ou à un autre serveur proxy pour obtenir la réponse. Ces choses se produiront donc comme expliqué ci-dessous.
A → B → C
C → D
C ← D
A ← B ← C
Sur le diagramme ci-dessus, vous pouvez voir qu'une demande a été envoyée à C de B, pas de A. Ensuite, de C, il y aura une demande envoyée à D. De même, la réponse ira à C de D puis à B et A.
Le diagramme ci-dessus indique que seul le contexte est important, bien que les deux mandataires agissent de la même manière, mais le proxy côté client cache les informations client tandis que le proxy côté serveur masque les informations côté serveur.
Les procurations directes accordent l'anonymat au client (par exemple, pensez à Tor ).
Les procurations inversées accordent l'anonymat aux serveurs principaux (c'est-à-dire, pensez aux serveurs derrière une zone démilitarisée).
Voici un exemple de proxy inverse (en tant qu'équilibreur de charge).
Un client surfe sur website.com et le serveur qu'il rencontre a un proxy inverse qui s'exécute dessus. Le proxy inverse se trouve être Pound . Pound prend la demande et l'envoie à l'un des trois serveurs d'applications assis derrière. Dans cet exemple, Pound est un équilibreur de charge. Autrement dit, il équilibre la charge entre trois serveurs d'applications.
Les serveurs d'applications fournissent le contenu du site Web au client.
Si aucun proxy
Pour voir du côté client et côté serveur sont les mêmes:
Client -> Serveur
Procuration
Du côté client:
Client -> proxy -> Serveur
Côté serveur:
Client -> Serveur
Proxy inverse
Du côté client:
Client -> Serveur
Côté serveur:
Client -> proxy -> Serveur
Je pense donc que s'il est configuré par un utilisateur client, il est appelé proxy, s'il est configuré par un gestionnaire de serveur, il s'agit d'un proxy inverse.
Les finalités et les raisons de leur configuration étant différentes, elles traitent les données de différentes manières et utilisent des logiciels différents.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Du point de vue de l'utilisateur: lors de l'envoi d'une demande à un serveur proxy ou proxy inverse :
proxy - nécessite deux arguments :
1) quoi obtenir et 2) quel serveur proxy utiliser un intermédiaire
proxy inverse - nécessite un argument :
1) quoi obtenir
Un proxy inverse récupère le contenu d'un autre serveur à l'insu de l'utilisateur et renvoie le résultat comme s'il provenait du serveur proxy inverse .
La plupart des réponses précédentes sont bonnes, mais à mon avis, aucune ne se rapproche assez bien de la qualité "inverse" qui différencie les deux. Pour ce faire, une façon de visualiser la nature "inverse" de ce qui est essentiellement la même chose (un proxy) doit être donnée, et elle doit être donnée d'une manière bien abstraite.
Un proxy (implicitement "proxy direct") connecte plusieurs clients locaux à un seul serveur distant:
c--
|--p--s
c--
Un proxy inverse connecte plusieurs serveurs locaux à n'importe quel client distant (remarquez comment la disposition s'inverse):
s--
|--p--c
s--
C'est une question de perspective vraiment et correctement comprendre le concept nécessite d'abstraire les détails non essentiels (au concept particulier) bien qu'ils puissent être très importants en ce qui concerne la pragmatique du fonctionnement du proxy. Ces détails incluent le fait que dans les deux scénarios, la réalité est que plusieurs clients se connectent à plusieurs serveurs, que les clients et les serveurs peuvent ne pas être vraiment locaux ou distants, où se trouve le cloud Internet ou quel type de visibilité existe entre le client et le serveur.