When putting WordPress behind an ALB that has SSL configured it might result in a configuration where the ALB uses SSL but WordPress communicates with the ALB over regular HTTP.
This can cause WordPress to serve HTTP (non-ssl) CSS and JavaScript resources and/or fail in other ways.
The solution is to check the X-Forwarded-Proto
header that ALB sets and let WordPress know whether it should treat the incoming request as an SSL request or not.
Put this code at the top of wp-config.php
to do exactly that:
// Get true SSL status from AWS load balancer
if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = '1';
}