Servindo http com o Apache na porta 443, atrás do terminador SSL

2

Nosso pessoal de operações de rede configurou a terminação SSL e, em seguida, fez o proxy reverso da solicitação para nós. Sua exigência é que, se eles virem a entrada na porta 443, devemos veicular o conteúdo na porta 443, por isso estaremos veiculando conteúdo não criptografado na porta 443. Essa é uma invariante que precisamos resolver.

Na maior parte, isso não é um problema. Nós Listen 443 e não configuramos SSL, e as coisas funcionam, exceto ... redirecionamentos.

Como exemplo, se definirmos:

Alias /foo /path/to/foo
<Directory /path/to/foo>
    ...
</Directory>

O Apache é inteligente o suficiente para redirecionar uma solicitação para /foo para /foo/ . Quando estamos usando o http na porta 80, ele funciona muito bem. No entanto, quando o cliente está usando https na porta 443, acabamos com um redirecionamento com um Location semelhante a este:

Location: http://my.example.com:443/foo/

O problema é que não queremos redirecionar de um protocolo seguro para um inseguro, não que isso importe, já que não fornecemos conteúdo inseguro na porta 443.

Eu estou supondo que há uma maneira melhor de dizer ao Apache que essa solicitação era originalmente uma solicitação segura, mas eu não conheço muito bem a configuração do Apache. Espero não ter que criar manualmente um redirecionamento para cada entrada Directory , especialmente porque algum conteúdo está disponível em formulários seguros e inseguros.

Alguém tem alguma indicação sobre os documentos que podem ajudar (infelizmente, não consigo encontrar o encantamento do google certo para ajudar)? Ponteiros da melhor maneira de lidar com isso também apreciaram. :)

    
por Travis Jensen 25.02.2015 / 23:25

1 resposta

5

Este cenário está descrito na documentação do ServerName :

Sometimes, the server runs behind a device that processes SSL, such as a reverse proxy, load balancer or SSL offload appliance. When this is the case, specify the https:// scheme and the port number to which the clients connect in the ServerName directive to make sure that the server generates the correct self-referential URLs.

Se você quiser fazer isso e manter a porta 80 funcionando ao mesmo tempo, você terá que usar um VirtualHost para pelo menos um deles, então você pode adicionar um ServerName separado.

    
por 26.02.2015 / 02:45