Come mettere il sito wordpress dietro il bilanciamento del carico AWS
Abbiamo un vecchio sito wordpress ospitato su un server Linux AWS EC2 che sto cercando di mettere dietro un bilanciamento del carico in modo da poter utilizzare HTTPS e WAF. Sono un amministratore di sistema un po 'esperto ma sono molto nuovo in wordpress. Ho problemi a caricare il contenuto su HTTPS mentre allo stesso tempo non entro in un ciclo di reindirizzamento tra il bilanciamento del carico e il server.
Ho l'impostazione del bilanciamento del carico per parlare con il server sulla porta 80 e se WP_SITEURL/WP_HOME è impostato su http://, ottengo una serie di errori di contenuto misto nella console di sviluppo di Chrome perché sta tentando di caricare script e css http. Se cambio WP_SITEURL/WP_HOME in https://, crea un ciclo di reindirizzamento perché wordpress continua a provare a reindirizzare il bilanciamento del carico, che sta tentando di comunicare sulla porta 80, a https.
C'è un modo per consentire al bilanciamento del carico di raggiungere il server sulla porta 80 pur avendo l'URL di base per risorse, script, ecc., essere https?
Risposte
Quando WordPress è dietro proxy https (il tuo bilanciamento del carico) non sa che https è abilitato. Il proxy funziona tramite https (porta 443) ma la comunicazione tra proxy e WordPress avviene tramite http (porta 80). Per WordPress il traffico passa attraverso http, ecco perché ottieni un loop di reindirizzamento da https a http (tramite WordPress) e di nuovo da http a https (tramite proxy). Devi forzare WordPress a iniziare a lavorare su https.
Incolla questa riga nel tuowp-config.php
$_SERVER['HTTPS'] = 'on';
A volte i proxy inviano un'intestazione aggiuntiva HTTP_X_FORWARDED_PROTO
a WordPress per far sapere che il traffico originale è su https. Puoi usarlo per essere un po' più flessibile
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
Modificare WP_SITEURL
e WP_HOME
utilizzare https. E sostituire tutti i collegamenti nel database in https.
Riferimento:https://developer.wordpress.org/reference/functions/is_ssl/