Qual é a diferença entre um servidor proxy e um servidor proxy reverso?

1773

Qual é a diferença entre um servidor proxy e um servidor proxy reverso?

Peter Mortensen
fonte
51
Também está bem explicado nos documentos do Apache .
Paolo
3
@Paolo que facilitou muito a compreensão do que o artigo da Wikipedia. Talvez eu devesse começar a editar algumas dessas informações no artigo da Wikipedia eventualmente ...
RastaJedi 17/07/16
Digamos que eu tenho o host A, que precisa se conectar ao host C, mas não diretamente. Em vez disso, ele é configurado como uma entrada com host ou possivelmente DNS, para chamar B, que encaminha a solicitação para C. C não se importa ou sabe sobre B. Esse é um proxy direto ou um proxy reverso?
Daniel Leach
Se o host A não puder chegar ao host C sem estar configurado para entrar em contato com o host B primeiro, o host B será um servidor proxy de encaminhamento ou saída tradicional.
TaylorMonacelli
5
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).
precisa saber é o seguinte

Respostas:

2970

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.

Proxy FORWARD

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.

Um conto de 3 computadores (parte I)

Por exemplo, vou listar três computadores conectados à Internet.

  • X = seu computador ou computador "cliente" na internet
  • Y = o site proxy, proxy.example.org
  • Z = o site que você deseja visitar, www.example.net

Normalmente, alguém se conectaria diretamente de X --> Z.

No entanto, em alguns cenários, é melhor para Y --> Z, em nome do Xque cadeias da seguinte forma: X --> Y --> Z.

Razões pelas quais o X gostaria de usar um servidor proxy de encaminhamento:

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 Xconexã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.comlo. 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.comsite.

        • 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 Zbloqueou 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. Xestá enviando spam para o fórum. Z bloqueia X.

Proxy REVERSO

Um conto de 3 computadores (parte II)

Neste exemplo, listarei três computadores conectados à Internet.

  • X = seu computador ou computador "cliente" na internet
  • Y = o site do proxy reverso, proxy.example.com
  • Z = o site que você deseja visitar, www.example.net

Normalmente, alguém se conectaria diretamente de X --> Z.

No entanto, em alguns cenários, é melhor para o administrador Zrestringir 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 --> Zem 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 Xnão sabe que está acessando Z, porque o usuário Xapenas 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 Xpensa que está apenas se comunicando com Y( X --> Y), mas a realidade é que Yencaminhando toda a comunicação ( X --> Y --> Znovamente).

Razões pelas quais o Z desejaria configurar um servidor proxy reverso:

  • 1) Z quer forçar todo o tráfego do seu site a passar por Y primeiro.
    • a) Z tem um site grande que milhões de pessoas desejam ver, mas um único servidor da web não pode lidar com todo o tráfego. Portanto, o Z configura muitos servidores e coloca um proxy reverso na Internet que enviará os usuários ao servidor mais próximo deles quando tentarem visitar o Z. Isso faz parte de como funciona o conceito da Rede de distribuição de conteúdo (CDN).
  • 2) O administrador do Z está preocupado com a retaliação pelo conteúdo hospedado no servidor e não deseja expor o servidor principal diretamente ao público.
    • a) Proprietários de marcas de spam, como "Canadian Pharmacy", parecem ter milhares de servidores, enquanto na realidade possuem a maioria dos sites hospedados em muito menos servidores. Além disso, as reclamações de abuso sobre o spam encerram apenas os servidores públicos, não o servidor principal.

Nos cenários acima, Ztem a capacidade de escolher Y.

Links para tópicos da postagem:

Rede de entrega de conteúdo

Software proxy de encaminhamento (lado do servidor)

Software proxy reverso para HTTP (lado do servidor)

Software proxy reverso para TCP (lado do servidor)

Veja também:

qyb2zm302
fonte
1
O TAM (tivoli access manager) também é um servidor proxy reverso, certo?
Clark Bao
2
Conceitualmente, poderíamos nos referir ou pensar em um "proxy reverso", em seguida, como um proxy "forçado"?
Thomas
3
"que enviará os usuários ao servidor mais próximo deles" - Qual é o objetivo? Todo o tráfego passará por esse servidor proxy, certo? Portanto, não importa onde está o local do servidor 'local' atrás dele. Ou estou faltando alguma coisa?
Pavel
2
@Pavel provavelmente "servidor mais próximo a eles" não é a melhor descrição. Mais como "distribuir carga para o conjunto de servidores" é uma descrição melhor. Este exemplo estava descrevendo um balanceador de carga de proxy reverso.
JDS
6
Esta foi a chave para mim: - forward: (X --> Y) --> Z, inverso: X --> (Y --> Z).
Druckles
538

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.

Krishna Bheemanakatte
fonte
414

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.

Proxy para frente vs Proxy reverso

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.

Nishant
fonte
9
Isso é realmente tudo o que você precisa olhar. Configurar um proxy no seu navegador para que a Netflix não saiba em que país você está é um proxy de encaminhamento; um serviço upstream que direciona uma solicitação de entrada (talvez você queira enviar uma solicitação para dois servidores) é um proxy reverso.
precisa
5
Proxy de encaminhamento pode ser na internet bem
mac
7
A melhor imagem na última resposta. Obrigado. :) Um proxy reverso também é conhecido como "Load Balancer" e atua no lado do servidor (distribui a carga para servidores diferentes), enquanto um proxy direto suporta o lado do cliente.
código é o seguinte
1
O autor do quora não é o autor original da imagem, pois esta página de 2013 com uma única revisão é um ano mais antiga.
Martijn Pieters
1
Pode ser que este tutorial de francês de 2009 seja a fonte; a cópia do arquivo da web de 2009 está com problemas de javascript (redirecionamentos contínuos) e as imagens foram arquivadas apenas em 2017, mas a fonte faz referência aos mesmos URLs de imagem das fontes posteriores.
Martijn Pieters
230

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

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

  • Proxy do servidor: cliente <-> ( proxy <-> servidor )

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.

Protongun
fonte
3
Esta resposta está em linha com httpd.apache.org/docs/2.0/mod/mod_proxy.html#forwardreverse e ajuda a explicar isso claramente
Greg Woods,
7
parece que o recurso mais relevante nessa comparação é quem sabe quem. proxy de encaminhamento: o cliente conhece o proxy (ele tem configurado de fato) e o servidor de destino (como solicita o URL do servidor), enquanto, no caso do proxy reverso, o cliente conhece o proxy como um servidor de destino (ele não sabe o que o proxy está realmente chamando; pode ser um servidor ou mais). com um proxy de encaminhamento, o servidor não sabe quem realmente são os clientes, pois o proxy "encaminha" o solicita. proxy de encaminhamento: ocultar cliente (s). proxy reverso: ocultar servidor (es).
22415
@Protongun ".. Um proxy é simplesmente um intermediário da comunicação (solicitações + respostas) .." qual é a necessidade de proxy em primeiro lugar? Por favor, esclareça. IMHO esta resposta deveria ter sido o único aceite
vikramvi
O primeiro link neste post deixa claro e fácil de entender para todos
Legends
@ Belun Bem explicado em termos / palavras simples.
Ilangeeran
129

Alguns diagramas podem ajudar:

Proxy de encaminhamento

Proxy de encaminhamento

Proxy reverso

Proxy reverso

Maria Ines Parnisari
fonte
8
É isso? Eles parecem iguais! O que há de tão especial em reescrever uma resposta que torna um proxy um proxy "reverso"?
8bitjunkie
2
@ 8bitjunkie É sobre perspectiva. Observe que, para o proxy de encaminhamento, o cliente sabe que está se comunicando com um servidor proxy. Para o proxy reverso, o cliente pensa que está se comunicando diretamente com o home.com. Os proxies também têm implementações diferentes. O proxy reverso pode ser bem estúpido. Tudo o que precisa fazer é mudar o endereço e repassar a ligação. Mais lógica de rede no cliente, menos no proxy. O proxy de encaminhamento, por outro lado, precisa saber de alguma forma que uma solicitação para proxy.com () requer uma chamada para service.com. Menos lógica de rede no cliente, mais no proxy.
Kevin
1
O que significa " traduzir myhome.myhosting.com para hom.com" Não recebo a parte de tradução. Como reescrever parte do cabeçalho da resposta ou algo assim?
1252748 04/11
Também uma das razões para o proxy reverso (com base no que entendi da resposta aceita) é que o objetivo disso é dividir o tráfego pesado de entrada entre vários servidores. Onde nessa cadeia isso acontece? Essa é outra "regra de entrada"?
1252748 04/11
@ 1252748 aproximadamente 1), a tradução significaria simplesmente mapear os URLs e emitir uma solicitação para o URL apropriado. about 2), sim, você pode configurar o servidor para, por exemplo, usar round robin para equilibrar as solicitações entre servidores.
Maria Ines Parnisari 23/11
72

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.

Benc
fonte
Só para ter certeza, um proxy direto é do lado do cliente e um proxy reverso é do lado do servidor?
Yves
4
@yves. um proxy também é um servidor. É apenas que o cliente precisa de uma configuração local para poder se comunicar. Enquanto um proxy reverso requer configuração no próprio servidor. Seus nós físicos estão no 'lado do servidor'.
Adib Aroui
Apenas para informações gerais, nem todos os proxies podem operar como avançar e reverter, por exemplo, o SOCKS pode, mas não os proxies HTTP.
RastaJedi
60

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.

Digite a descrição da imagem aqui

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.

Digite a descrição da imagem aqui

Dimos
fonte
6
Sinto que poderia copiar e colar suas definições para trás e que elas ainda seriam verdadeiras. Acho que isso não explica nenhuma diferença importante ou esclarece o que é tão "reverso" em um proxy reverso?
8bjunkie
6
O proxy sempre atuará em nome de alguém (ocultando sua identidade da outra parte). O "reverso" refere-se a reverter o lado do qual está "oculto", sendo cliente no primeiro caso (proxy regular) e servidor no segundo caso (proxy reverso). De fato, os termos podem ser usados ​​de forma intercambiável, é apenas uma questão de convenção ter selecionado o primeiro caso como proxy regular (provavelmente por razões históricas). Espero que isso faça sentido.
Dimos 29/02
44

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.

Farhan
fonte
38

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.

Ignacio Vazquez-Abrams
fonte
28

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.

Digite a descrição da imagem aqui

Origem da imagem: Criando um proxy de encaminhamento usando o roteamento de solicitação de aplicativo

JSON C11
fonte
3
IMHO, resposta mais simples / melhor.
Vinicius Gonçalves
12

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

Chris Kimpton
fonte
10

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.

Proxy de encaminhamento

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.

Proxy reverso

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.

Sourabh Sharma
fonte
10

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

8bitjunkie
fonte
9

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.

ae.
fonte
8

Um proxy de encaminhamento atende aos usuários : ajuda os usuários a acessar o servidor .

Um proxy reverso serve o servidor : protege o servidor dos usuários .

HoangYell
fonte
4

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
tinyhare
fonte
Seria melhor se sua representação gráfica, mas bom conteúdo @ tinyhare.
Narendra
3

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 .

pspi
fonte
1

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.

Fotios Basagiannis
fonte
"vários servidores locais para qualquer cliente remoto" - hm, por que não vários servidores para vários clientes? Quero dizer - o próprio servidor não se conecta aos clientes de qualquer maneira, apenas responde a quaisquer solicitações de clientes, independentemente de serem vários clientes ou o mesmo cliente único.
precisa saber é o seguinte
Leia novamente - especialmente o último parágrafo e tentar compreender "qualquer cliente remoto" como um dos muitos exemplos de operação
Fotios Basagiannis
O texto está ok, mas o segundo diagrama me fez pensar "ei, para onde foi o outro cliente?" quando eu comparei com o primeiro diagrama.
precisa saber é o seguinte
Sim, é porque esse cliente não é nenhum dos outros dois. Os desenvolvedores tendem a pensar em termos muito concretos e específicos, porque isso é o que ajuda quando você está implementando coisas, no entanto, a mesma maneira de pensar não é muito útil quando se pensa em abstrações.
Fotios Basagiannis