search
LoginSignup
10
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
10
Help us understand the problem. What are the problem?