เวลาใช้ท่า nginx เป็น reverse proxy ด้านนอกสุด รับ SSL แล้วส่งต่อ request ให้ server ด้านหลังที่เป็น Apache/Nginx+PHP ด้วย HTTP แต่เราต้องการให้ PHP รับรู้ว่า request จริงๆ มาเป็น HTTPS โดยเดิมเราก็ส่ง Header
proxy_set_header X-Forwarded-Proto https;
มาแล้ว หลังๆ บางที Web server ด้านหลังก็ยังมองว่าเป็น HTTP อยู่ดี ต้องแปะอะไรทำนองนี้เพิ่มเข้าไป
/**
* If external request was HTTPS but internal request is HTTP, set $_SERVER['HTTPS'] so Drupal detects the right scheme.
*/
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' && $_SERVER["REQUEST_SCHEME"] == 'http') {
$_SERVER['HTTPS'] = 'on';
}
อ้างอิง: https://www.drupal.org/project/provision/issues/3040646
ในบางกรณีพบว่ามีปัญหาในการอ้างถึง files ใน sites/default/files ให้บังคับแบบนี้
$settings['file_public_base_url'] = 'https://<host-name>/sites/default/files';