Recientemente actualicé mi sitio web: CMS (Drupal), su sistema operativo (Ubuntu 14.04) y Apache (2.4.7).
La situación es que al navegar porhttps://ejemplo.com/lo que seaPHP no puede detectar HTTPS. $_SERVER['HTTPS']
está vacío y $_SERVER['SERVER_PORT']
devuelve 80. Y eso causa un problema porque Drupal no puede detectar HTTPS y está entregando archivos HTTP (contenido mixto).
La única variable que muestra que la conexión es HTTPS es HTTP_X_FORWARDED_PROTO, y Drupal no maneja esta configuración para servir contenido.
<<< No tengo un proxy inverso ni ninguna configuración avanzada que no sea LAMP y Drupal, y solo un solo sitio. >>>Incorrecto, estaba ejecutando mi sitio con CloudFlare.
Considere que no quiero una solución Drupal, ya la logré. Quiero saber por qué Apache no envía a PHP las variables de SERVIDOR correctas o qué podría estar mal con mi configuración.
Gracias por tu ayuda.
<<< Edición final >>>PD: Estoy ejecutando mi sitio a través de un proxy inverso, CloudFlare. Es fácil olvidarlo una vez que lo instalas. Verifique mi respuesta para ver la opción que debe configurar para obtener las variables de SERVIDOR esperadas.
Respuesta1
El problema fue que olvidé que estaba usando CloudFlare (es fácil de olvidar una vez que lo instalaste). Por eso HTTP_X_FORWARDED_PROTO dijo HTTPS, porque estaba detrás de un proxy inverso.
Mi configuración de CloudFlare bajo CRYPTO/SSL con SPDY también decía: Flexible.Cuando se cambia a completo, PHP devuelve las variables HTTPS y SERVER_PORT esperadas.