Recentemente atualizei meu site: CMS (Drupal), seu SO (Ubuntu 14.04) e Apache (2.4.7).
A situação é que ao navegar emhttps://example.com/qualquer que sejaPHP 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 consegue 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 lida com essa configuração para servir conteúdo.
<<< Não tenho proxy reverso ou qualquer configuração avançada além de LAMP e Drupal, e apenas um único site. >>>Errado, eu estava administrando meu site com CloudFlare.
Considere que não quero uma solução Drupal, já consegui isso. Quero saber por que o Apache não está enviando ao PHP os vars SERVER corretos ou o que pode estar errado com minha configuração.
Obrigado pela 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ê deve definir para obter os vars SERVER esperados.
Responder1
O problema é que esqueci que estava usando o CloudFlare (fácil de esquecer depois de instalado). É por isso que HTTP_X_FORWARDED_PROTO disse HTTPS, porque eu estava atrás de um proxy reverso.
Minha configuração CloudFlare em CRYPTO/SSL com SPDY também dizia: Flexível.Quando alterado para completo, o PHP retorna os vars HTTPS e SERVER_PORT esperados.