WordPressサイトをAWSロードバランサーの背後に配置する方法
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でサーバーに到達できるようにする方法はありますか?
回答
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_SITEURL
しWP_HOME
て使用します。そして、データベース内のすべてのリンクをhttpsに置き換えます。
参照: https://developer.wordpress.org/reference/functions/is_ssl/