¿Cuál es la diferencia entre un servidor proxy y un servidor proxy inverso?
¿Cuál es la diferencia entre un servidor proxy y un servidor proxy inverso?
Respuestas:
Las respuestas anteriores fueron precisas, pero tal vez demasiado breves. Intentaré agregar algunos ejemplos.
En primer lugar, la palabra "poder" describe a alguien o algo que actúa en nombre de otra persona.
En el ámbito informático, estamos hablando de un servidor que actúa en nombre de otra computadora.
Para fines de accesibilidad, limitaré mi discusión a los servidores proxy web; sin embargo, la idea de un proxy no se limita a los sitios web.
La mayor parte de la discusión sobre proxies web se refiere al tipo de proxy conocido como "proxy directo".
El evento de proxy, en este caso, es que el "proxy de reenvío" recupera datos de otro sitio web en nombre del solicitante original.
Por ejemplo, enumeraré tres computadoras conectadas a Internet.
Normalmente, uno se conectaría directamente desde X --> Z.
Sin embargo, en algunos casos, es mejor que Y --> Z
en nombre de X
, que las cadenas de la siguiente manera: X --> Y --> Z
.
Aquí hay una lista (muy) parcial de usos de un servidor proxy de reenvío:
1) X no puede acceder a Z directamente porque
a) Alguien con autoridad administrativa sobre X
la conexión a Internet ha decidido bloquear todo acceso al sitio Z
.
Ejemplos:
El virus Storm Worm se está propagando engañando a las personas para que visiten familypostcards2008.com
, por lo que el administrador del sistema ha bloqueado el acceso al sitio para evitar que los usuarios se infecten a sí mismos sin darse cuenta.
Los empleados de una gran empresa han estado perdiendo demasiado tiempo facebook.com
, por lo que la gerencia quiere que se bloquee el acceso durante el horario comercial.
Una escuela primaria local no permite el acceso a Internet al playboy.com
sitio web.
Un gobierno no puede controlar la publicación de noticias, por lo que controla el acceso a las noticias bloqueando sitios como wikipedia.org
. Ver TOR o FreeNet .
b) El administrador de Z
ha bloqueado X
.
Ejemplos:
El administrador de Z ha notado intentos de piratería provenientes de X, por lo que ha decidido bloquear la dirección IP de X (y / o netrange).
Z es un sitio web de foro. X
está enviando spam al foro. Z bloquea X.
Para este ejemplo, enumeraré tres computadoras conectadas a Internet.
Normalmente, uno se conectaría directamente desde X --> Z.
Sin embargo, en algunos escenarios, es mejor para el administrador Z
restringir o no permitir el acceso directo y obligar a los visitantes a pasar por Y primero. Así que, como antes, tenemos datos que están siendo recuperados por Y --> Z
el nombre de X
, que las cadenas de la siguiente manera: X --> Y --> Z
.
Lo que es diferente esta vez en comparación con un "proxy de reenvío" es que esta vez el usuario X
no sabe que está accediendo Z
, porque X
solo ve que se está comunicando Y
. El servidor Z
es invisible para los clientes y solo el proxy inverso Y
es visible externamente. Un proxy inverso no requiere configuración (proxy) en el lado del cliente.
El cliente X
piensa que solo se está comunicando con Y
( X --> Y
), pero la realidad es que Y
reenvía toda la comunicación ( X --> Y --> Z
nuevamente).
En los escenarios anteriores, Z
tiene la capacidad de elegir Y
.
(X --> Y) --> Z
, inverso: X --> (Y --> Z)
.
Un par de definiciones simples serían:
Proxy de reenvío: Actuar en nombre de un solicitante (o consumidor de servicios)
Proxy inverso: actuar en nombre del servicio / productor de contenido.
Encontré que el siguiente diagrama es muy útil. Simplemente muestra la arquitectura de una configuración de proxy directo versus inverso del cliente al servidor a través de Internet. Esta imagen lo ayudará a comprender mejor la respuesta de qyb2zm302 y otras respuestas.
También puede ver el vídeo de F5 's DevCentral por Peter Silva.
Fuente de la imagen: Quora . Sin embargo, según Martijn Pieters , esta imagen podría ser de Pulse Secure Community o del sitio de Julien Pauli (en francés) en developmentpez.com.
Me recordó al proverbio clásico:
Una imagen vale más que 1000 palabras.
El proxy directo frente al proxy inverso (2012) explica la diferencia entre los proxies directos e inversos muy claramente.
La respuesta de qyb2zm302 detalla muy bien las aplicaciones de proxies, pero se desliza sobre el concepto fundamental entre proxies hacia adelante y hacia atrás. Para el proxy inverso, X → Y → Z, X sabe acerca de Y y no Z, en lugar de viceversa.
Un proxy es simplemente un intermediario para la comunicación (solicitudes + respuestas). Cliente <-> Proxy <-> Servidor
El proxy actúa en nombre del cliente. El cliente conoce las tres máquinas involucradas en la cadena. El servidor no lo hace.
El proxy actúa en nombre del servidor. El cliente solo sabe sobre el proxy. El servidor conoce toda la cadena.
Me parece que hacia adelante y hacia atrás son simplemente nombres confusos y dependientes de la perspectiva para el proxy del cliente y del servidor . Sugiero abandonar el primero por el segundo, para una comunicación explícita.
Por supuesto, para complicar aún más el asunto, no todas las máquinas son exclusivamente clientes o servidores. Si hay una ambigüedad en el contexto, lo mejor es especificar explícitamente dónde se encuentra el proxy y las comunicaciones que canaliza.
Algunos diagramas pueden ayudar:
Proxy de reenvío
Proxy inverso
La diferencia está principalmente en la implementación. Los proxies web hacia adelante y hacia atrás tienen las mismas características subyacentes. Aceptan solicitudes de solicitudes HTTP en varios formatos y proporcionan una respuesta, generalmente accediendo al servidor de origen o de contacto.
Los servidores con todas las funciones generalmente tienen control de acceso, almacenamiento en caché y algunas características de mapeo de enlaces.
Un proxy directo es un proxy al que se accede configurando la máquina cliente. El cliente necesita soporte de protocolo para las funciones de proxy (redirección, autenticación de proxy, etc.). El proxy es transparente para la experiencia del usuario, pero no para la aplicación.
Un proxy inverso es un proxy que se implementa como un servidor web y se comporta como un servidor web, con la excepción de que, en lugar de componer localmente el contenido de los programas y el disco, reenvía la solicitud a un servidor de origen. Desde la perspectiva del cliente, es un servidor web, por lo que la experiencia del usuario es completamente transparente.
De hecho, una única instancia de proxy puede ejecutarse como proxy directo e inverso al mismo tiempo para diferentes poblaciones de clientes.
Proxy: está haciendo la solicitud en nombre del cliente . Entonces, el servidor devolverá la respuesta al proxy, y el proxy reenviará la respuesta al cliente. De hecho, el servidor nunca "aprenderá" quién era el cliente (la dirección IP del cliente); solo sabrá el proxy. Sin embargo, el cliente definitivamente conoce el servidor, ya que esencialmente formatea la solicitud HTTP destinada al servidor, pero solo la entrega al proxy.
Proxy inverso: está recibiendo la solicitud en nombre del servidor . Reenvía la solicitud al servidor, recibe la respuesta y luego devuelve la respuesta al cliente. En este caso, el cliente nunca "aprenderá" quién era el servidor real (la dirección IP del servidor) (con algunas excepciones); solo sabrá el proxy. El servidor sabrá o no el cliente real, dependiendo de las configuraciones del proxy inverso.
La mejor explicación está aquí con diagramas:
Mientras que un proxy proxy reenvía en nombre de los clientes ( o solicitando hosts ) , un proxy proxy inverso en nombre de los servidores.
En efecto, mientras que un proxy directo oculta las identidades de los clientes, un proxy inverso oculta las identidades de los servidores.
Un servidor proxy representa (y opcionalmente almacena en caché) las solicitudes de red salientes a varios recursos públicos no necesariamente relacionados a través de Internet. Un proxy inverso captura (y opcionalmente almacena en caché) las solicitudes entrantes de Internet y las distribuye a varios recursos privados internos, generalmente con fines de alta disponibilidad.
Cloudflare tiene un excelente artículo con imágenes que explican esto en detalle.
Marque aquí: ¿Qué es un proxy inverso? El | Servidores proxy explicados
Proxy (Proxy de reenvío):
Cuando las computadoras en su LAN se conectan a un servidor proxy que accede a Internet. Los beneficios incluyen solo el servidor expuesto a Internet. Las personas en el exterior no pueden acceder a las computadoras directamente. Los servidores proxy pueden mejorar el acceso a Internet para los usuarios al almacenar en caché las descargas. También se pueden usar para restringir el acceso a ciertos sitios. Además, solo el servidor proxy necesitaría una dirección pública, no los clientes que se conectan a él.
Proxy inverso:
Un proxy inverso es lo contrario de un proxy directo. En su lugar, actúa como un proxy en nombre de los servidores a los que se conecta. En lugar de acceder a un servidor remoto directamente, un usuario pasaría por el proxy inverso y sería dirigido al servidor apropiado desde allí. Solo el proxy inverso necesitaría un certificado SSL, solo se necesitaría una dirección IP pública y puede manejar el equilibrio de carga de las solicitudes entrantes para mejorar la experiencia general del usuario.
Fuente de la imagen: creación de un proxy de reenvío mediante el enrutamiento de solicitudes
Desde el punto de vista de Apache, entiendo que proxy significa que si el sitio x representa para el sitio y, las solicitudes de x devuelven y.
El proxy inverso significa que la respuesta de y se ajusta para que todas las referencias a y se conviertan en x.
Para que el usuario no pueda decir que un proxy está involucrado ...
Según mi entendimiento ...
Para empezar, como todos saben, proxy significa "la autoridad para representar a alguien más". Ahora hay dos cosas, proxy directo e inverso.
Supongamos que desea acceder a "Google" y "Google" a su vez tendrá un número n de servidores para responder a esa solicitud en particular.
Ahora, en este caso, mientras solicita algo de Google y no desea que Google vea su dirección IP, utilizará un proxy de reenvío, como se explica a continuación.
A → B → C
Ahora aquí está A, enviando una solicitud a través de B. Entonces C pensará que la solicitud proviene de B, no de A. De esta manera, puede evitar que la dirección IP de sus clientes no se exponga al mundo exterior.
Ahora, en este caso, para hacerle entender, tomaremos el mismo caso de proxy directo. Aquí ha solicitado algo a Google, que a su vez enviará una solicitud al servidor de aplicaciones u otro servidor proxy para obtener la respuesta. Entonces, estas cosas sucederán como se explica a continuación.
A → B → C
C → D
C ← D
A ← B ← C
En el diagrama anterior puede ver que se ha enviado una solicitud a C desde B, no desde A. Luego, desde C habrá una solicitud enviada a D. De manera similar, la respuesta irá a C desde D y luego a B y A.
El diagrama anterior dice que es solo el contexto lo que importa, aunque ambos proxys actúan de la misma manera, pero el proxy del lado del cliente está ocultando la información del cliente, mientras que el proxy del lado del servidor ocultará la información del lado del servidor.
Los proxies avanzados otorgan al cliente el anonimato (es decir, piense en Tor ).
Los servidores proxy inversos otorgan anonimato a los servidores de fondo (es decir, piensan en servidores detrás de una DMZ).
Aquí hay un ejemplo de un proxy inverso (como balanceador de carga).
Un cliente navega a website.com y el servidor al que golpea tiene un proxy inverso ejecutándose en él. El proxy inverso pasa a ser Libra . Pound toma la solicitud y la envía a uno de los tres servidores de aplicaciones que se encuentran detrás de ella. En este ejemplo, Pound es un equilibrador de carga. Es decir, está equilibrando la carga entre tres servidores de aplicaciones.
Los servidores de aplicaciones devuelven el contenido del sitio web al cliente.
Si no hay proxy
Para ver desde el lado del cliente y el lado del servidor son los mismos:
Cliente -> Servidor
Apoderado
Del lado del cliente:
Cliente -> proxy -> Servidor
Del lado del servidor:
Cliente -> Servidor
Proxy inverso
Del lado del cliente:
Cliente -> Servidor
Del lado del servidor:
Cliente -> proxy -> Servidor
Así que creo que si lo configura un usuario del cliente, se llama proxy, si lo configura un administrador del servidor, es un proxy inverso.
Debido a que los propósitos y las razones para configurarlo son diferentes, manejan los datos de diferentes maneras y usan un software diferente.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Mirando desde la perspectiva del usuario: al enviar una solicitud a un servidor proxy o servidor proxy inverso :
proxy : requiere dos argumentos :
1) qué obtener y 2) qué servidor proxy utilizará un intermediario
proxy inverso : requiere un argumento :
1) qué obtener
Un proxy inverso obtiene contenido de otro servidor sin que el usuario lo sepa y devuelve el resultado como si se hubiera originado en el servidor proxy inverso .
La mayoría de las respuestas anteriores son buenas, pero en mi opinión ninguna se acerca mucho a abordar suficientemente la calidad "inversa" que diferencia a las dos. Para hacer eso, se debe dar alguna forma de visualizar la naturaleza "inversa" de lo que es esencialmente lo mismo (un proxy), y se debe dar de una manera bien abstracta.
Un proxy (implícitamente "proxy de reenvío") conecta varios clientes locales a cualquier servidor remoto:
c--
|--p--s
c--
Un proxy inverso conecta varios servidores locales a cualquier cliente remoto (observe cómo se invierte el diseño):
s--
|--p--c
s--
Es una cuestión de perspectiva comprender realmente y adecuadamente el concepto, requiere abstraer los detalles no esenciales (para el concepto particular), aunque pueden ser muy importantes cuando se trata de la pragmática de la operación proxy. Tales detalles incluyen el hecho de que en ambos escenarios la realidad es que varios clientes se conectan a múltiples servidores, que los clientes y servidores pueden no ser realmente locales o remotos, dónde se encuentra la nube de Internet o qué tipo de visibilidad existe entre el cliente y el servidor.