É possível que um proxy reverso faça sua solicitação para outro proxy e reescreva os urls no conteúdo da resposta?

2

Atualmente estou pesquisando proxies reversos e ainda não tenho um específico em mente.

Estou tentando encaminhar minhas solicitações de um proxy reverso por meio de outro proxy na Web com autenticação. A razão principal para um proxy reverso é ter as urls reescritas, então quando o usuário clicar nele, ele será encaminhado através do meu proxy reverso. No entanto, ele também precisa passar por um proxy real com autenticação.

Então, basicamente, o que eu estou tentando alcançar é que o usuário navega para um site, a solicitação é capturada por um proxy reverso, o proxy reverso faz outra solicitação por meio de outro proxy (com uma autenticação de proxy). Quando o proxy reverso recebe uma resposta, ele reescreve os URLs do conteúdo dentro da resposta e os entrega de volta ao usuário.

Minha pergunta é: isso é possível? Se sim, onde posso começar a procurar implementar isso?

Qualquer ajuda é apreciada, obrigado!

edite: Eu encontrei uma maneira de reescrever URLs no proxy mod usando mod_replace . Mas ainda não encontrei uma maneira de encaminhar os webrequests através de outro proxy

    
por KrispyDonuts 19.07.2013 / 16:13

1 resposta

0

Isto é da documentação do Apache

ProxyPass Directive

Description: Maps remote servers into the local server URL-space

Syntax: ProxyPass [path] !|url [key=value [key=value ...]] [nocanon] [interpolate] [noquery]

Context: server config, virtual host, directory

Status: Extension

Module: mod_proxy

Esta diretiva permite que os servidores remotos sejam mapeados para o espaço do servidor local; o servidor local não atua como um proxy no sentido convencional, mas parece ser um espelho do servidor remoto. O servidor local é freqüentemente chamado de proxy reverso ou gateway . O caminho é o nome de um caminho virtual local; url é uma URL parcial para o servidor remoto e não pode incluir uma string de consulta.

Note: This directive cannot be used within a context.

The ProxyRequests directive should usually be set off when using ProxyPass.

Suponha que o servidor local tenha o endereço http://example.com/; then

ProxyPass http://backend.example.com/

fará com que uma solicitação local para http://example.com/mirror/foo/bar seja convertida internamente em uma solicitação de proxy para http://backend.example.com/bar .

A sintaxe alternativa a seguir é possível, mas pode levar uma penalidade de desempenho quando presente em números muito grandes. A vantagem da sintaxe abaixo é que ela permite o controle dinâmico por meio da interface do Gerenciador do balanceador:

ProxyPass /mirror/foo/ http://backend.example.com/

If the first argument ends with a trailing /, the second argument should also end with a trailing / and vice versa. Otherwise the resulting requests to the backend may miss some needed slashes and do not deliver the expected results.

O! A diretiva é útil em situações em que você não deseja fazer proxy reverso de um subdiretório, por exemplo,

<Location /mirror/foo/>
ProxyPass http://backend.example.com/
</Location>

<Location /mirror/foo/i>
ProxyPass !
</Location>

ProxyPass /mirror/foo/i ! ProxyPass /mirror/foo http://backend.example.com

fará o proxy de todas as solicitações para solicitações /mirror/foo to backend.example.com exceto feitas para /mirror/foo/i .

Ordering ProxyPass Directives

The configured ProxyPass and ProxyPassMatch rules are checked in the order of configuration. The first rule that matches wins. So usually you should sort conflicting ProxyPass rules starting with the longest URLs first. Otherwise later rules for longer URLS will be hidden by any earlier rule which uses a leading substring of the URL. Note that there is some relation with worker sharing. In contrast, only one ProxyPass directive can be placed in a Location block, and the most specific location will take precedence. For the same reasons exclusions must come before the general ProxyPass directives.

No Apache HTTP Server 2.1 e posterior, o mod_proxy suporta conexões em pool com um servidor backend. As conexões criadas sob demanda podem ser retidas em um pool para uso futuro. Limites no tamanho do pool e outras configurações podem ser codificados na diretiva ProxyPass usando os parâmetros key=value , descritos na tabela abaixo.

Por padrão, o mod_proxy permitirá e manterá o número máximo de conexões que podem ser usadas simultaneamente por esse processo filho do servidor web. Use o parâmetro max para reduzir o número do padrão. Use o parâmetro ttl para definir um horário opcional para viver; as conexões que não foram usadas por pelo menos ttl segundos serão fechadas. ttl pode ser usado para evitar o uso de uma conexão que está sujeita a fechamento devido ao tempo limite de manutenção do servidor de backend.

O pool de conexões é mantido por processo filho do servidor web e max e outras configurações não são coordenadas entre todos os processos filhos, exceto quando apenas um processo filho é permitido pela configuração ou pelo design do MPM.

Example

ProxyPass /example http://backend.example.com max=20 ttl=120 retry=300

    
por 28.07.2013 / 06:38