WordPressのURLをhttpからhttpsに変更するときにハマったので、対処法をメモ
無限ループの原因
下記のような構成の場合、 ALBからEC2へは「HTTP」になっているため
wordpressをSSL化(httpからhttpsへリダイレクト)をすると無限ループになってしまいます。
※ 自分は、KUSANAGIを使っていて https redirect
コマンドで、この状態になりました。
nginxの設定変更
ALBを経由した場合、ユーザが使用したプロトコル (http か https)は、 X-Forwarded-Protoヘッダーに格納されています。
これを見てユーザがhttpでアクセスした時だけリダイレクトするように、設定ファイルを変更します。
/etc/nginx/conf.d/XXXX_http.conf
server {
・・・
# この部分でリダイレクト判定
if ($http_x_forwarded_proto = 'http'){
return 301 https://$host$request_uri;
}
・・・
}
WordPressの設定変更
WordPressもユーザが使用したプロトコルを元に判断するように、wp-config.phpに下記を追加します。
wp-config.php
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
nginxとwordpressの設定を変更したあと、
wordpressのURLを http→httpsに変更すれば、無限ループにならずに変更できました。