Help us understand the problem. What is going on with this article?

WordPressをSSL化で無限ループしたときの対処法

More than 1 year has passed since last update.

WordPressのURLをhttpからhttpsに変更するときにハマったので、対処法をメモ

無限ループの原因

下記のような構成の場合、 ALBからEC2へは「HTTP」になっているため
wordpressをSSL化(httpからhttpsへリダイレクト)をすると無限ループになってしまいます。
Untitled Diagram.png

※ 自分は、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に変更すれば、無限ループにならずに変更できました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away