Qual é a diferença entre um servidor proxy e um servidor proxy reverso?
Qual é a diferença entre um servidor proxy e um servidor proxy reverso?
Respostas:
As respostas anteriores foram precisas, mas talvez muito concisas. Vou tentar adicionar alguns exemplos.
Primeiro de tudo, a palavra "proxy" descreve alguém ou algo agindo em nome de outra pessoa.
Na área de computadores, estamos falando de um servidor agindo em nome de outro computador.
Para fins de acessibilidade, limitarei minha discussão a proxies da Web - no entanto, a idéia de um proxy não se limita a sites.
A maioria das discussões sobre proxies da Web refere-se ao tipo de proxy conhecido como "proxy de encaminhamento".
O evento de proxy, nesse caso, é que o "proxy de encaminhamento" recupera dados de outro site em nome do solicitante original.
Por exemplo, vou listar três computadores conectados à Internet.
Normalmente, alguém se conectaria diretamente de X --> Z.
No entanto, em alguns cenários, é melhor para Y --> Z
, em nome do X
que cadeias da seguinte forma: X --> Y --> Z
.
Aqui está uma lista (muito) parcial de usos de um servidor proxy de encaminhamento:
1) X não consegue acessar Z diretamente porque
a) Alguém com autoridade administrativa na X
conexão da Internet decidiu bloquear todo o acesso ao site Z
.
Exemplos:
O vírus Storm Worm está se espalhando, enganando as pessoas para visitá- familypostcards2008.com
lo. Portanto, o administrador do sistema bloqueou o acesso ao site para impedir que os usuários se infectem inadvertidamente.
Os funcionários de uma grande empresa estão perdendo muito tempo facebook.com
; portanto, a gerência quer o acesso bloqueado durante o horário comercial.
Uma escola primária local não permite o acesso à internet no playboy.com
site.
Um governo é incapaz de controlar a publicação de notícias; portanto, controla o acesso a notícias, bloqueando sites como o wikipedia.org
. Veja TOR ou FreeNet .
b) O administrador de Z
bloqueou X
.
Exemplos:
O administrador do Z notou tentativas de hacking vindas do X, portanto, o administrador decidiu bloquear o endereço IP do X (e / ou o intervalo de rede).
Z é um site de fórum. X
está enviando spam para o fórum. Z bloqueia X.
Neste exemplo, listarei três computadores conectados à Internet.
Normalmente, alguém se conectaria diretamente de X --> Z.
No entanto, em alguns cenários, é melhor para o administrador Z
restringir ou proibir o acesso direto e forçar os visitantes a passarem por Y primeiro. Então, como antes, temos dados que estão sendo recuperadas por Y --> Z
em nome X
, que cadeias da seguinte forma: X --> Y --> Z
.
O que é diferente neste momento em comparação com um "proxy de encaminhamento" é que desta vez o usuário X
não sabe que está acessando Z
, porque o usuário X
apenas vê que está se comunicando Y
. O servidor Z
é invisível para os clientes e apenas o proxy reverso Y
é visível externamente. Um proxy reverso não requer configuração (proxy) no lado do cliente.
O cliente X
pensa que está apenas se comunicando com Y
( X --> Y
), mas a realidade é que Y
encaminhando toda a comunicação ( X --> Y --> Z
novamente).
Nos cenários acima, Z
tem a capacidade de escolher Y
.
(X --> Y) --> Z
, inverso: X --> (Y --> Z)
.
Um par de definições simples seria:
Proxy de encaminhamento: agindo em nome de um solicitante (ou consumidor de serviço)
Proxy Reverso: Atuação em nome do serviço / produtor de conteúdo.
Achei o diagrama abaixo muito útil. Ele apenas mostra a arquitetura de uma configuração de proxy de encaminhamento vs. reverso do cliente para o servidor pela Internet. Esta imagem ajudará você a entender melhor a resposta de qyb2zm302 e outras respostas.
Você também pode assistir a este vídeo no DevCentral da F5 , de Peter Silva.
Fonte da imagem: Quora . No entanto, de acordo com Martijn Pieters , essa imagem pode ser do Pulse Secure Community ou do site de Julien Pauli (em francês) em developpez.com.
Isso me lembrou o provérbio clássico:
Uma imagem vale mais que 1000 palavras.
Proxy de avanço versus proxy reverso (2012) explica a diferença entre proxies de encaminhamento e reverso com muita clareza.
A resposta do qyb2zm302 detalha muito bem as aplicações de proxies, mas aborda o conceito fundamental entre proxies de avanço e reverso. Para o proxy reverso, X → Y → Z, X conhece Y e não Z, em vez de vice-versa.
Um proxy é simplesmente um intermediário da comunicação (solicitações + respostas). Cliente <-> Proxy <-> Servidor
O proxy atua em nome do cliente. O cliente conhece todas as três máquinas envolvidas na cadeia. O servidor não.
O proxy atua em nome do servidor. O cliente conhece apenas o proxy. O servidor conhece toda a cadeia.
Parece-me que para a frente e reverter são simplesmente nomes confusos e dependentes de perspectiva para clientes e proxy de servidor . Sugiro abandonar o primeiro pelo segundo, por comunicação explícita.
Obviamente, para complicar ainda mais o problema, nem toda máquina é exclusivamente um cliente ou servidor. Se houver uma ambiguidade no contexto, é melhor especificar explicitamente onde está o proxy e as comunicações que ele encapsula.
Alguns diagramas podem ajudar:
Proxy de encaminhamento
Proxy reverso
A diferença está principalmente na implantação. Os proxies de encaminhamento e reversão da Web têm todos os mesmos recursos subjacentes. Eles aceitam solicitações de HTTP em vários formatos e fornecem uma resposta, geralmente acessando a origem ou o servidor de contato.
Servidores com todos os recursos geralmente têm controle de acesso, armazenamento em cache e alguns recursos de mapeamento de link.
Um proxy de encaminhamento é um proxy acessado através da configuração da máquina cliente. O cliente precisa de suporte de protocolo para recursos de proxy (redirecionamento, autenticação de proxy etc.). O proxy é transparente para a experiência do usuário, mas não para o aplicativo.
Um proxy reverso é um proxy implementado como servidor da Web e se comporta como um servidor da Web, com a exceção de que, em vez de compor localmente o conteúdo dos programas e do disco, encaminha a solicitação para um servidor de origem. Do ponto de vista do cliente, é um servidor da Web, portanto a experiência do usuário é completamente transparente.
De fato, uma única instância de proxy pode ser executada como um proxy de avanço e reverso ao mesmo tempo para diferentes populações de clientes.
Proxy: está fazendo a solicitação em nome do cliente . Portanto, o servidor retornará a resposta ao proxy e o encaminhará a resposta ao cliente. De fato, o servidor nunca "aprenderá" quem era o cliente (o endereço IP do cliente); ele conhecerá apenas o proxy. No entanto, o cliente definitivamente conhece o servidor, pois formata essencialmente a solicitação HTTP destinada ao servidor, mas apenas a entrega ao proxy.
Proxy Reverso: Ele está recebendo a solicitação em nome do servidor . Encaminha a solicitação para o servidor, recebe a resposta e retorna a resposta para o cliente. Nesse caso, o cliente nunca "aprenderá" quem era o servidor real (o endereço IP do servidor) (com algumas exceções); ele conhecerá apenas o proxy. O servidor conhecerá ou não o cliente real, dependendo das configurações do proxy reverso.
A melhor explicação está aqui com diagramas:
Enquanto um proxy de encaminhamento proxies em nome de clientes ( ou solicitando hosts ) , um proxy reverso procura em nome de servidores.
Com efeito, enquanto um proxy direto oculta as identidades dos clientes, um proxy reverso oculta as identidades dos servidores.
Um servidor proxy proxies (e opcionalmente armazena em cache) as solicitações de rede de saída para vários recursos públicos não necessariamente relacionados na Internet. Um proxy reverso captura (e opcionalmente armazena em cache) solicitações de entrada da Internet e as distribui para vários recursos privados internos, geralmente para fins de alta disponibilidade.
Cloudflare tem um ótimo artigo com imagens explicando isso em detalhes.
Verifique aqui: O que é um proxy reverso? | Servidores proxy explicados
Proxy (Proxy Avançado):
Quando os computadores na sua LAN se conectam a um servidor proxy que acessa a Internet. Os benefícios incluem apenas o servidor sendo exposto à Internet. As pessoas externas não conseguem acessar os computadores diretamente. Os proxies de encaminhamento podem melhorar o acesso à Internet dos usuários, armazenando em cache os downloads. Eles também podem ser usados para restringir o acesso a determinados sites. Além disso, apenas o servidor proxy precisaria de um endereço público, não os clientes que se conectam a ele.
Proxy Reverso:
Um proxy reverso é o oposto de um proxy direto. Em vez disso, atua como um proxy em nome dos servidores conectados. Em vez de acessar um servidor remoto diretamente, um usuário passaria pelo proxy reverso e seria direcionado para o servidor apropriado a partir daí. Somente o proxy reverso precisaria de um certificado SSL, apenas um endereço IP público seria necessário e ele pode lidar com o balanceamento de carga de solicitações recebidas para aprimorar a experiência geral do usuário.
Origem da imagem: Criando um proxy de encaminhamento usando o roteamento de solicitação de aplicativo
Do meu ponto de vista do Apache , o proxy significa que, se site x proxies para o site y, solicitações de x retornam y.
O proxy reverso significa que a resposta de y é ajustada para que todas as referências a y se tornem x.
Para que o usuário não saiba que um proxy está envolvido ...
De acordo com o meu entendimento ...
Para começar, como todos sabem, proxy significa "a autoridade para representar outra pessoa". Agora, existem duas coisas: proxy direto e reverso.
Suponha que você queira acessar o "Google" e o "Google", por sua vez, terá um número n de servidores para responder a essa solicitação específica.
Agora, nesse caso, enquanto você solicita algo do Google e não deseja que o Google veja seu endereço IP, você usará um proxy de encaminhamento, conforme explicado abaixo.
A → B → C
Agora, aqui está A, enviando uma solicitação através de B. Então C pensará que a solicitação é proveniente de B, e não A. Dessa forma, você pode impedir que o endereço IP de seus clientes não seja exposto ao mundo externo.
Agora, neste caso, para fazer você entender, usaremos o mesmo caso de proxy direto. Aqui você solicitou algo ao Google, que por sua vez enviará uma solicitação ao servidor de aplicativos ou outro servidor proxy para obter a resposta. Então, essas coisas acontecerão como explicado abaixo.
A → B → C
C → D
C ← D
A ← B ← C
No diagrama acima, você pode ver que uma solicitação foi enviada para C de B, não de A. Então, de C, haverá uma solicitação enviada para D. Da mesma forma, a resposta será para C de D e depois para B e A.
O diagrama acima diz que é apenas o contexto que importa, embora ambos os proxies estejam agindo da mesma maneira, mas o proxy do lado do cliente está ocultando as informações do cliente, enquanto o proxy do lado do servidor oculta as informações do lado do servidor.
Os proxies de encaminhamento concedem anonimato ao cliente (ou seja, pense em Tor ).
Os proxies reversos concedem anonimato aos servidores back-end (ou seja, pense nos servidores por trás de uma DMZ).
Aqui está um exemplo de um proxy reverso (como um balanceador de carga).
Um cliente navega para website.com e o servidor encontrado possui um proxy reverso em execução. O proxy reverso passa a ser Pound . Pound pega a solicitação e a envia para um dos três servidores de aplicativos que estão atrás dele. Neste exemplo, Pound é um balanceador de carga. Ou seja, está equilibrando a carga entre três servidores de aplicativos.
Os servidores de aplicativos entregam o conteúdo do site de volta ao cliente.
Se nenhum proxy
Para ver do lado do cliente e do servidor, são os mesmos:
Cliente -> Servidor
Proxy
Do lado do cliente:
Cliente -> proxy -> Servidor
Do lado do servidor:
Cliente -> Servidor
Proxy reverso
Do lado do cliente:
Cliente -> Servidor
Do lado do servidor:
Cliente -> proxy -> Servidor
Então, acho que, se configurado por um usuário cliente, é chamado de proxy, se configurado por um gerenciador de servidor, é um proxy reverso.
Como os propósitos e as razões para configurá-lo são diferentes, eles lidam com os dados de maneiras diferentes e usam software diferente.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Olhando da perspectiva do usuário: ao enviar uma solicitação para um servidor proxy ou proxy reverso :
proxy - requer dois argumentos :
1) o que obter e 2) qual servidor proxy usar um intermediário
proxy reverso - requer um argumento :
1) o que obter
Um proxy reverso busca o conteúdo de outro servidor sem o conhecimento do usuário e retorna o resultado como se fosse originário do servidor proxy reverso .
A maioria das respostas anteriores é boa, mas na minha opinião nenhuma chega nem perto de abordar suficientemente bem a qualidade "reversa" que diferencia as duas. Para fazer isso, é necessário fornecer uma maneira de visualizar a natureza "inversa" do que é essencialmente a mesma coisa (um proxy), e precisa ser dada de uma maneira bem abstrata.
Um proxy (implicitamente "proxy de encaminhamento") conecta vários clientes locais a qualquer servidor remoto:
c--
|--p--s
c--
Um proxy reverso conecta vários servidores locais a qualquer cliente remoto (observe como o layout reverte):
s--
|--p--c
s--
É uma questão de perspectiva compreender realmente e adequadamente o conceito requer abstrair detalhes não essenciais (para o conceito em particular), embora possam ser muito importantes quando se trata da pragmática da operação de proxy. Esses detalhes incluem o fato de que, em ambos os cenários, a realidade é que vários clientes se conectam a vários servidores, que clientes e servidores podem não ser realmente locais ou remotos, onde a nuvem da Internet está localizada ou que tipo de visibilidade existe entre o cliente e o servidor.