WordPressサイトをAWSロードバランサーの背後に配置する方法

Aug 18 2020

AWS EC2 Linuxサーバーでホストされている古いワードプレスサイトがあり、HTTPSとWAFを使用できるようにロードバランサーの背後に配置しようとしています。私はやや経験豊富なシステム管理者ですが、ワードプレスは非常に新しいです。ロードバランサーとサーバー間のリダイレクトループに入ると同時に、HTTPS経由でコンテンツをロードするのに問題があります。

ポート80でサーバーと通信するようにロードバランサーを設定していますが、WP_SITEURL / WP_HOMEがhttp://に設定されている場合、スクリプトとcssをロードしようとしているため、Chrome開発コンソールで多数の混合コンテンツエラーが発生しますhttp。WP_SITEURL / WP_HOMEをhttps://に変更すると、wordpressがポート80で通信しようとしているロードバランサーをhttpsにリダイレクトしようとし続けるため、リダイレクトループが作成されます。

リソースやスクリプトなどのベースURLをhttpsのままにして、ロードバランサーがポート80でサーバーに到達できるようにする方法はありますか?

回答

1 kierzniak Aug 27 2020 at 23:59

WordPressがhttpsプロキシ(ロードバランサー)の背後にある場合、httpsが有効になっていることを認識しません。プロキシはhttps(443ポート)を介して機能しますが、プロキシとWordPress間の通信はhttp(80ポート)を介して行われます。WordPressトラフィックがhttpを経由する場合、httpsからhttpへ(WordPressによる)、またhttpからhttpsへ(プロキシによる)リダイレクトループが発生するのはそのためです。WordPressにhttpsでの作業を開始させる必要があります。

この行をあなたのに貼り付けます wp-config.php

$_SERVER['HTTPS'] = 'on';

プロキシはHTTP_X_FORWARDED_PROTO、元のトラフィックがhttps上にあることを知らせるために、追加のヘッダーをWordPressに送信することがありました。あなたはそれをもう少し柔軟にするために使うことができます

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on';
}

httpsを変更WP_SITEURLWP_HOMEて使用します。そして、データベース内のすべてのリンクをhttpsに置き換えます。

参照: https://developer.wordpress.org/reference/functions/is_ssl/