初めまして。Joolenで修行中の修行僧 おおたに です。修行のために頭を丸めました。 突然ですが、AWSでWordPressを構築する場合に行ったHTTPSのトラブルシュートについて、全世界に向けて絶賛公開いたします!! (もったいぶらないで、回答からいくスタイルです)  

[現象]

・Amazon EC2にWordPressをインストールすると管理画面でログインできない。 または、管理画面自体が表示されない。  

[環境]

・サーバー:Amazon EC2 ・外部からはELB(ロードバランサー)へHTTPSでアクセス ・ELBからEC2へはHTTPでアクセス  

[解決策]

次の2点(1.と2.)を実施します。 セキュリティに関する設定になりますので、ご使用は自己責任でよろしくお願いいたしますm(_ _)m   1. WordPressの URL設定を変更する <①ELBのHTTPS制限を一時的に無効にしても構わない場合> HTTPS制限を解除すれば、WordPress管理画面へHTTPアクセスできます。管理画面へログインし、[設定]で次の2点を変更します(「WordPressのURL」は各自の環境に合わせて変更してください)
  • WordPress アドレス(URL):https://WordPressのURL
  • サイトアドレス(URL):https://WordPressのURL
変更が終わったら、解除していたHTTPS制限を元に戻すのをお忘れなく   <②ELBのHTTPS制限を無効にできない場合> HTTPS制限があると、WordPress管理画面にログインできないので、DBを直接操作して、次の2文を実行します(「DB名」と「WordPressのURL」は各自の環境に合わせて変更してください)
  • 「UPDATE DB名.wp_options set option_value=’https://WordPressのURL’ where option_name=’siteurl’;」
  • 「UPDATE DB名.wp_options set option_value=’https://WordPressのURL’ where option_name=’home’;」
    2. HTTPアクセスをHTTPSアクセスと認識させる
 WordPressのPHPファイルを編集します。
[wordpressインストールフォルダ/wp-config.php]の下の方に書いてある[require_once]文より上に、
次のif文を追記します。
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS'] = 'on';
これで、解決できます。お疲れサマでした。南無阿弥陀仏♪  

[参考ページ]

https://codex.wordpress.org/Function_Reference/is_ssl  

[原因の解説]

ELBでHTTPS制限している場合は、外部からのアクセスはHTTPSに制限されますが、内部アクセスはHTTPに変わります。このため、WordPressへの内部アクセスはHTTPになります(ここがポイントです!) WordPressがHTTP設定の場合、外部からのアクセスはHTTPSなのに、WordPressが生成するアドレスはHTTPになるため、ブラウザがセキュリティエラーを出して、[管理画面にログインできない]状態になります。 また、WordPressがHTTPS設定の場合、HTTPアクセスが来るとHTTPSアクセスへ変更してリダイレクトする仕様のため、リダイレクト無限ループが発生して、[管理画面自体が表示されない]状態になります。 ■リダイレクト無限ループ ①WordPressがHTTP(内部のアクセス)をHTTPSへ変更してリダイレクト ②リダイレクトされたHTTPSを、ELBがWordPressへHTTPとして渡す(->①へ戻る)   WordPressがリダイレクトするコードはwp-login.phpファイルの先頭あたりに書いてあるので、見てみると面白いと思います。 それではまた。次回の投稿にご期待ください。南無阿弥陀仏♪    

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA