Como colocar o site wordpress atrás do balanceador de carga da AWS
Temos um site wordpress antigo hospedado em um servidor linux AWS EC2 que estou tentando colocar atrás de um balanceador de carga para poder usar HTTPS e WAF. Eu sou um administrador de sistema um tanto experiente, mas sou muito novo no wordpress. Estou tendo problemas para carregar o conteúdo por HTTPS e, ao mesmo tempo, não entrar em um loop de redirecionamento entre o balanceador de carga e o servidor.
Eu tenho a configuração do balanceador de carga para falar com o servidor na porta 80 e se WP_SITEURL/WP_HOME estiver definido como http://, recebo vários erros de conteúdo misto no console de desenvolvimento do chrome porque ele está tentando carregar scripts e css http. Se eu mudar WP_SITEURL/WP_HOME para https://, ele cria um loop de redirecionamento porque o wordpress continua tentando redirecionar o balanceador de carga, que está tentando se comunicar na porta 80, para https.
Existe uma maneira de permitir que o balanceador de carga alcance o servidor na porta 80 enquanto ainda possui o URL base para recursos, scripts etc., seja https?
Respostas
Quando o WordPress está atrás do proxy https (seu balanceador de carga), ele não sabe que o https está habilitado. O proxy funciona por meio de https (porta 443), mas a comunicação entre o proxy e o WordPress é feita por meio de http (porta 80). Para WordPress, o tráfego é através de http, é por isso que você obtém um loop de redirecionamento de https para http (pelo WordPress) e novamente de http para https (por proxy). Você precisa forçar o WordPress a começar a trabalhar em https.
Cole esta linha em seuwp-config.php
$_SERVER['HTTPS'] = 'on';
Às vezes, os proxies enviam um cabeçalho adicional HTTP_X_FORWARDED_PROTO
ao WordPress para informar que o tráfego original está em https. Você pode usá-lo para ser um pouco mais flexível
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
Alterar WP_SITEURL
e WP_HOME
usar https. E substitua todos os links no banco de dados por https.
Referência:https://developer.wordpress.org/reference/functions/is_ssl/