Quelle est la différence entre un serveur proxy et un serveur proxy inverse?


1773

Quelle est la différence entre un serveur proxy et un serveur proxy inverse?


51
C'est aussi bien expliqué dans les documents Apache .
Paolo

3
@Paolo qui l'a rendu beaucoup plus facile à comprendre que l'article Wikipedia. Peut-être que je devrais finir par modifier certaines de ces informations dans l'article de Wikipédia éventuellement ...
RastaJedi

Disons que j'ai l'hôte A qui doit se connecter à l'hôte C, mais pas directement. Au lieu de cela, il est configuré en tant qu'entrée avec hôte ou éventuellement DNS, pour appeler B qui transmet la demande à C. C ne se soucie pas ou ne connaît pas B. Est-ce un proxy direct ou un proxy inverse?
Daniel Leach

Si l'hôte A ne peut pas accéder à l'hôte C sans être configuré pour contacter d'abord l'hôte B, alors l'hôte B est un serveur proxy traditionnel de transfert ou "sortant".
TaylorMonacelli

5
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).
8bitjunkie

Réponses:


2972

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.

Proxy FORWARD

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.

Un conte de 3 ordinateurs (partie I)

Pour un exemple, je vais énumérer trois ordinateurs connectés à Internet.

  • X = votre ordinateur ou ordinateur "client" sur Internet
  • Y = le site Web proxy, proxy.example.org
  • Z = le site Web que vous souhaitez visiter, www.example.net

Normalement, on se connecte directement depuis X --> Z.

Toutefois, dans certains scénarios, il est préférable pour Y --> Zle compte de Xqui chaînes comme suit: X --> Y --> Z.

Raisons pour lesquelles X voudrait utiliser un serveur proxy direct:

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 Xla 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.comsite 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 Za 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. Xspamme le forum. Z bloque X.

Proxy inversé

Un conte de 3 ordinateurs (partie II)

Pour cet exemple, je vais répertorier trois ordinateurs connectés à Internet.

  • X = votre ordinateur ou ordinateur "client" sur Internet
  • Y = le site Web du proxy inverse, proxy.example.com
  • Z = le site Web que vous souhaitez visiter, www.example.net

Normalement, on se connecte directement depuis X --> Z.

Cependant, dans certains scénarios, il est préférable pour l'administrateur de Zrestreindre 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 --> Zle 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 Xne sait pas qu'il accède Z, car l'utilisateur Xvoit seulement qu'il communique avec Y. Le serveur Zest invisible pour les clients et seul le proxy inverse Yest visible de l'extérieur. Un proxy inverse ne nécessite aucune configuration (proxy) côté client.

Le client Xpense qu'il communique uniquement avec Y( X --> Y), mais la réalité est que la Ytransmission de toutes les communications (à X --> Y --> Znouveau).

Raisons pour lesquelles Z voudrait configurer un serveur proxy inverse:

  • 1) Z veut forcer tout le trafic vers son site Web à passer par Y en premier.
    • a) Z a un grand site Web que des millions de personnes veulent voir, mais un seul serveur Web ne peut pas gérer tout le trafic. Ainsi, Z configure de nombreux serveurs et met un proxy inverse sur Internet qui enverra les utilisateurs au serveur le plus proche d'eux lorsqu'ils essaieront de visiter Z. Cela fait partie du fonctionnement du concept de réseau de distribution de contenu (CDN).
  • 2) L'administrateur de Z s'inquiète des représailles pour le contenu hébergé sur le serveur et ne souhaite pas exposer le serveur principal directement au public.
    • a) Les propriétaires de marques de spam comme «Canadian Pharmacy» semblent avoir des milliers de serveurs, alors qu'en réalité la plupart des sites Web sont hébergés sur beaucoup moins de serveurs. De plus, les plaintes d'abus concernant le spam fermeront uniquement les serveurs publics, pas le serveur principal.

Dans les scénarios ci-dessus, Za la possibilité de choisir Y.

Liens vers des sujets de la publication:

Réseau de diffusion de contenu

Logiciel de proxy direct (côté serveur)

Logiciel proxy inverse pour HTTP (côté serveur)

Logiciel proxy inverse pour TCP (côté serveur)

Voir également:


1
TAM (gestionnaire d'accès tivoli) est également un serveur proxy inverse, non?
Clark Bao

2
Sur le plan conceptuel, nous pourrions alors nous référer à un "proxy inverse" ou le considérer comme un proxy "forcé"?
Thomas

3
"qui enverra les utilisateurs vers le serveur le plus proche d'eux" - Quel est l'intérêt? Tout le trafic passera par ce serveur proxy, non? Peu importe donc l'emplacement du serveur «local» derrière. Ou je manque quelque chose?
Pavel

2
@Pavel n'est probablement pas la meilleure description du "serveur le plus proche". Plus comme "répartir la charge sur le pool de serveurs" est une meilleure description. Cet exemple décrivait un équilibreur de charge de proxy inverse.
JDS

6
Ce fut la clé pour moi: - avant: (X --> Y) --> Z, inverse: X --> (Y --> Z).
Druckles

538

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.


414

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.

Proxy direct vs proxy inverse

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.


9
C'est vraiment tout ce dont vous avez besoin. Configurer un proxy dans votre navigateur pour que Netflix ne sache pas dans quel pays vous vous trouvez est un proxy direct; un service en amont qui dirige une demande entrante (peut-être que vous souhaitez envoyer une demande à deux serveurs) est un proxy inverse.
Kyle Chadha

5
Le proxy direct peut également être sur Internet
mac

7
La meilleure image dans la dernière réponse. Merci. :) Un proxy inverse est également connu sous le nom de "Load Balancer" et agit du côté serveur (répartit la charge sur différents serveurs), tandis qu'un proxy direct prend en charge le côté client.
codepleb

1
L'auteur de quora n'est pas l'auteur original de l'image, car cette page de 2013 avec une seule révision a un an de plus.
Martijn Pieters

1
Il se peut que ce tutoriel de français de 2009 soit la source; la copie des archives Web de 2009 présente des problèmes de javascript (redirections continues), et les images n'ont été archivées qu'en 2017, mais la source fait référence aux mêmes URL d'image que les sources ultérieures.
Martijn Pieters

230

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

  • Proxy client: ( 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.

  • Proxy serveur: client <-> ( serveur proxy <-> )

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.


3
Cette réponse est conforme à httpd.apache.org/docs/2.0/mod/mod_proxy.html#forwardreverse et aide à l'expliquer clairement
Greg Woods

7
il semble que la caractéristique la plus pertinente de cette comparaison soit qui sait qui. proxy direct: le client connaît à la fois le proxy (il l'a configuré en fait) et le serveur cible (car il fait la demande de l'url du serveur), tandis que, dans le cas du proxy inverse, le client connaît le proxy en tant que serveur cible (il ne sait pas ce que le proxy appelle réellement; il peut s'agir d'un serveur ou plus). avec un proxy direct, le serveur ne sait pas vraiment qui sont les clients, car le proxy lui "fait suivre". proxy direct: masquer le (s) client (s). proxy inverse: masquer le (s) serveur (s).
Belun

@Protongun "..Un proxy est simplement un intermédiaire pour la communication (demandes + réponses) .." quel est le besoin de proxy en premier lieu? Précisez s'il vous plaît. À
mon humble avis,

Le premier lien de cet article le rend clair et facile à comprendre pour tout le monde
Legends

@Belun Bien expliqué en termes / termes extrêmement simples.
Ilangeeran

129

Certains diagrammes pourraient aider:

Proxy de transfert

Proxy de transfert

Proxy inverse

Proxy inverse


8
C'est ça? Ils se ressemblent! Quelle est la particularité de réécrire une réponse qui fait d'un proxy un proxy "inversé"?
8bitjunkie

2
@ 8bitjunkie C'est une question de perspective. Notez que, pour le proxy direct, le client sait qu'il communique avec un serveur proxy. Pour le proxy inverse, le client pense qu'il communique directement avec home.com. Les proxys ont également différentes implémentations. Le proxy inverse peut être assez stupide. Il suffit de changer l'adresse et de passer l'appel. Plus de logique réseau sur le client, moins sur le proxy. Le proxy direct, d'autre part, doit savoir en quelque sorte qu'une demande de proxy.com () nécessite un appel à service.com. Moins de logique de mise en réseau sur le client, plus sur le proxy.
Kevin

1
Qu'entend-on par « traduire myhome.myhosting.com en hom.com»? Comme réécrire une partie de l'en-tête de réponse ou quelque chose?
1252748

Une des raisons du proxy inverse (sur la base de ce que j'ai compris de la réponse acceptée) est également que le but de cette opération est de diviser le trafic entrant lourd entre plusieurs serveurs. Où cela se produit-il dans cette chaîne? Est-ce une autre "règle entrante"?
1252748

@ 1252748 environ 1), la traduction signifierait simplement mapper les URL et émettre une demande vers l'URL appropriée. environ 2), oui, vous pouvez configurer le serveur pour, par exemple, utiliser le round robin pour équilibrer la charge des demandes entre les serveurs.
Maria Ines Parnisari

72

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.


Juste pour être sûr, un proxy direct est côté client et un proxy inverse est côté serveur?
Yves

4
@yves. un proxy est également un serveur. C'est juste que le client a besoin d'une configuration locale pour pouvoir communiquer. Alors qu'un proxy inverse nécessite une configuration sur le serveur lui-même. Leurs nœuds physiques sont tous les deux du «côté serveur».
Adib Aroui

Juste pour des informations générales, tous les proxys ne peuvent pas fonctionner en avant et en arrière, par exemple, SOCKS peut, mais pas les proxys HTTP.
RastaJedi

60

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.

Entrez la description de l'image ici

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.

Entrez la description de l'image ici


6
J'ai l'impression que je pourrais copier et coller vos définitions à l'envers et qu'elles seraient toujours vraies. Je ne pense pas que cela explique une différence clé ou clarifie ce qui est si «inversé» sur un proxy inverse?
8bitjunkie

6
Le mandataire agira toujours au nom de quelqu'un (en cachant son identité à l'autre partie). Le "reverse" se réfère à inverser le côté qui est "caché", avec qu'il soit client sur le premier cas (proxy ordinaire) et serveur sur le second cas (proxy inverse). En effet, les termes pourraient être utilisés de manière interchangeable, c'est juste une question de convention ayant choisi le premier cas comme proxy régulier (probablement pour des raisons historiques). J'espère que cela a du sens.
Dimos

44

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.


38

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é.



28

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.

Entrez la description de l'image ici

Source d'image: création d'un proxy direct à l'aide du routage des demandes d'application


3
À mon humble avis, la réponse la plus simple / meilleure.
Vinicius Gonçalves

12

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é ...


10

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.

Proxy de transfert

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.

Proxy inverse

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.


10

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).



9

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.


8

Un proxy direct sert les utilisateurs : il aide les utilisateurs à accéder au serveur .

Un proxy inverse sert le serveur : il protège le serveur des utilisateurs .


4

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

Il serait préférable que sa représentation graphique soit un contenu agréable. @ Tinyhare
Narendra

3

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 .


1

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.


"plusieurs serveurs locaux vers un même client distant" - hm, pourquoi pas plusieurs serveurs vers plusieurs clients? Je veux dire - le serveur lui-même ne se connecte pas aux clients de toute façon, il ne répond qu'à toutes les demandes des clients, qu'il s'agisse de plusieurs clients ou du même client unique.
JustAMartin

Lisez à nouveau - en particulier le dernier paragraphe et essayez de comprendre «n'importe quel client distant» comme l'un des nombreux cas de fonctionnement
Fotios Basagiannis

Le texte est ok, c'est juste que le deuxième diagramme m'a fait soudain penser "hey, où est passé l'autre client?" quand je l'ai comparé au premier diagramme.
JustAMartin

Oui, c'est parce que ce client n'est pas l'un des deux autres. Les développeurs ont tendance à penser en termes très concrets et spécifiques parce que c'est ce qui aide lorsque vous implémentez des choses, mais cette même façon de penser n'est pas très utile lorsque vous pensez aux abstractions.
Fotios Basagiannis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.