WordPress httpsプラグインを使用したAWS ELBおよびwordpressサイトでの無限リダイレクトループ


11

Wordpress 3.2.1を実行しているUbuntuサーバーを指すようにAWS ELBを設定しました。ロードバランサーの背後に配置するまで、サーバーではすべてがうまくいきました。

ポート80をポート80に、ポート443をポート80に転送するようにロードバランサーを設定しました。

elbのヘッダーを確認するように仮想ホストファイルを設定します。

RewriteEngine On
RewriteCond%{HTTP:X-Forwarded-Proto}!https
RewriteRule!/ status https://% {SERVER_NAME}%{REQUEST_URI} [L、R]

これで、httpsのURLにアクセスするたびに次のメッセージが表示されます。

このWebページにはリダイレクトループがありますhttps://mywebsite.com/securepage/
のWebページによりリダイレクトが多すぎます

wordpress httpsプラグイン
http://wordpress.org/extend/plugins/wordpress-https/)を無効にするとすぐに、
ページは機能しますが、今は混合コンテンツでいっぱいです。httpsであるべきページは、もはやhttpsではありません。

elb経由ではなく直接サーバーにアクセスするとすぐに再び機能します。

これをAWS ELBと連携させる方法についてのアイデアはありますか?


パーマリンクを更新しましたか?通常、ワードプレスのパーマリンク設定を更新する必要があります
user905953

回答:


13

ELBがHTTPS(443 / tcp)トラフィックをHTTP(80 / tcp)のEC2インスタンスにリダイレクトしているというELB設定を投稿しないと、私は推測を危険にさらすでしょう。次に.htaccess、プラグインは、HTTP経由で表示されているため、HTTPSにリダイレクトしようとしています。

下のあなたのEC2コンソールを見て行くNetwork & Security > Load Balancersと、私はあなたが表示されます想像Port Configurationの線に沿って何かを言います443 forwarding to 80 (HTTPS, Certificate: blah)


1
ここの人も同じ問題を抱えていました。 forums.aws.amazon.com/...
ChickenFur


あなたの右の私は443 80に転送しています
ChickenFur

私は2年以上AWSでクライアントの1つを実行しています...あなたの質問を読んだとき、それが疑わしいと私の頭に浮かんだ最初のものです。
Jeremy Bouse、2011

1
LBを443から443に変更することで修正されました:)ありがとうございます!
ChickenFur 2011

17

あなたにこれを追加してみてくださいhttpd.confまたはAN.htaccess

SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS

ロードバランサー+ HTTPSを使用する場合、WebサーバーはフロントエンドでHTTPSが使用されていることを認識しないため、実際にはHTTPSがすでに使用されている場合でも、HTTPSサイトにリダイレクトしようとし続けます。

上記は、AmazonのLoad Balancerが送信するヘッダーを(X-Forwarded-Proto: https)、Wordpressおよび他のPHPスクリプトが理解できる環境変数に変換します(HTTPS=1


3
これは、ELBのSSL復号化のままで、それを行う正しい方法でしょう
toske

1
あなたはnginxのにしている場合は、同様の加算は次のようになりますfastcgi_param HTTPS on;
AkashさんBudhia

この投稿は私の1時間の痛みを終わらせました... THX
Daywalker

3

Amazonによると、https//d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf修正は次のとおりです。

/** Detect if SSL is used. This is required since we are terminating SSL either on CloudFront or on ELB */ 
if (($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https') OR ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))
    {$_SERVER['HTTPS']='on';}

私はまだ無限ループに終わったので、WordPressの設定を次のように変更しました:

define('WP_HOME','http://www.example.com');
define('WP_SITEURL','http://www.example.com');

に:

define('WP_HOME','https://www.example.com');
define('WP_SITEURL','https://www.example.com');

これにより、ユーザーがhttpと入力した場合でもhttpsが強制されます。さらに、WP_HOMEをローカルホストに更新するだけで、httpsがデフォルトではなくなるため、サイトをオフラインで簡単に開発できます。


1

別の有用な投稿https://serverfault.com/a/858308/450836から自分を引用:

私にとっては、$ _ SERVER ['HTTPS'] = 'on'を設定するだけで十分でした。wp-config.php内。ELBでSSLを終了するAWS ELBを使用しています。したがって、nginxはポート80(ワニスの後の8080)でリクエストを受け入れ、サイトがすでにhttpsを使用していることをPHPに明示的に通知するまで、ワードプレスはそれを処理できなかったようです...

非SSL ELBリスナーの場合、別の構成を使用して、すべてのトラフィックをデフォルトのリスナーとしてhttpsにリダイレクトします。


0

@Timが示唆したように、$_SERVER['HTTPS']='on';wp-config.phpのこれは私にとってはトリックでした。

これを.htaccessファイルに追加して、HTTPSを強制します。

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

0

aws ALBのリダイレクトの問題が多すぎるのを修正

ヘッダーモジュールを有効にして、Apache設定に次のエントリを追加します

SetEnvIf X-Forwarded-Proto "https" HTTPS = on RequestHeader set HTTPS "on" env = HTTPS

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.