Cómo solucionar los enlaces sin https en Platform.sh
Hace unos días me saltó en el Facebook Debugger un aviso de que las rutas canónicas de Canamo.net apuntaban a la versión http, sin ese de Securitè.
Navegando por las issues de Metatag, descubrí que esto sucede cuando hay algun tipo de reverse proxy, incluyendo CDNs. Y claro, de repente caí que Platform.sh sirve solía servir el contenido desde un CDN (acabo de descubrir que ahora sólo ocurre en los planes más caros, maledetti).
La solución al problema es añadir estas líneas en el settings.php
$settings['reverse_proxy'] = TRUE;
$settings['reverse_proxy_addresses'] = array($_SERVER['REMOTE_ADDR']);
Incluso sin CDN, parece que la infraestructura de platform.sh hace uso de algún proxy inverso o similar. No he podido encontrar más información acerca de la infraestructura exacta, pero en un ticket me han confirmado que es correcto.
Es también destacable que esta información no está presente en la documentación de Drupal en platform.sh ni en sus plantillas de settings.php.
Dado que el rango de IPs es variable, hay que usar el valor array($_SERVER['REMOTE_ADDR'])
. Drupal avisa que este valor te hace susceptible al IP spoofing pero desde platform.sh me indican que es un rango privado y no es susceptible de este tipo de problemas.
Bola extra: un artículo con más info acerca del por qué de las entradas de reverse_proxy en Drupal8/9 y la muerte del mítico $base_url de Drupal 7.