8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

8
10
0

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
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?