X-Forwarded-Proto com vários proxies

1

Não consigo redirecionar HTTP para HTTPS usando o Apache porque temos mais de um proxy entre o cliente e o servidor.

O HTTPS está sendo encerrado em um balanceador de carga voltado para a Internet, todos os outros dispositivos (incluindo o servidor Apache atendendo as solicitações) estão usando HTTP.

Eu posso ver que tudo o que o Apache analisa é o X-Forwarded-Proto do último proxy na cadeia, que é HTTP.

Como posso forçá-lo a olhar para o verdadeiro cabeçalho X-Forwarded-Proto (do cliente remoto)?

    
por gm777 31.01.2017 / 03:16

1 resposta

0

Para redirecionamentos vindos do backend http, a única diretiva com a qual você deve se preocupar no proxy reverso é:

ProxyPassReverse

Se um redirecionamento vier de uma cadeia de backends proxy reversos, não importa o que eles enviem, se você tiver uma diretiva ProxyPassReverse para qualquer nome interno, o Apache mudará o host no Local e o esquema (http / s) como o cliente enviou originalmente.

O bom é que o ProxyPassReverse pode ser especificado quantas vezes forem necessárias.

Então, por exemplo, se o seu proxy reverso hospeda o link público e você tem um miriad de backends atrás de enviar redirecionamentos como:

Location: http://something.example.com/somesome
Location: http://otherthing.internal.example.com/heresomething/jkjljl.whatever
Location: http://deepdowninthechain.some.exampe.com/therethere/there/there

Tudo o que você precisa fazer é adicionar:

ProxyPassReverse / http://something.example.com/
ProxyPassReverse / http://otherthing.internal.example.com/
ProxyPassReverse / http://deepdowninthechain.some.exampe.com/

E o Apache HTTPD retornará todos os cabeçalhos de localização para o que o cliente original solicitou: link ...

    
por 31.01.2017 / 14:56