Por que eu configurei HTTP_X_FORWARDED_PROTO e desabilitei HTTPS no Apache 2.4? [fechadas]

1

Recentemente atualizei meu site: CMS (Drupal), seu SO (Ubuntu 14.04) e Apache (2.4.7).

A situação é que quando navega em link o PHP não consegue detectar HTTPS. $_SERVER['HTTPS'] está vazio e $_SERVER['SERVER_PORT'] retorna 80. E isso causa um problema porque o Drupal não pode detectar HTTPS e está servindo arquivos HTTP (conteúdo misto).

A única variável que mostra que a conexão está em HTTPS é HTTP_X_FORWARDED_PROTO e o Drupal não manipula essa configuração para veicular conteúdo.

< < < Eu não tenho um proxy reverso ou qualquer configuração avançada diferente de LAMP e Drupal e apenas um único site. > > > Errado, eu estava executando meu site com o CloudFlare.

Considere que não quero uma solução Drupal, já consegui isso. Eu quero saber porque o Apache não está enviando o PHP o SERVER correto vars ou o que poderia estar errado com minha configuração.

Obrigado pela sua ajuda.

< < < Edição final > > > PD: Estou executando meu site em um proxy reverso, CloudFlare. É fácil esquecer isso depois de instalar. Verifique minha resposta para ver a opção que você precisa definir para obter as variáveis SERVER esperadas.

    
por Beto Aveiga 02.05.2015 / 14:42

1 resposta

2

O problema é que eu esqueci que estava usando o CloudFlare (fácil de esquecer quando você o instalou). É por isso que HTTP_X_FORWARDED_PROTO disse HTTPS, porque eu estava por trás de um proxy reverso.

Minha configuração CloudFlare em CRYPTO / SSL com SPDY também dizia: Flexível. Quando alterado para full, o PHP retorna os esperados HTTPS e SERVER_PORT vars.

    
por 02.05.2015 / 14:57