nginx+ApacheのリバースプロキシでSSLエラーが出たときの対処法

GCEにてnginx+Apacheのリバースプロキシをしているサイトを制作しました。この中でちょっと無限ループなどが起きたので対処法を書いておきます。
リバースプロキシを使用しているケースとなります
nginx単体や、nginxにてリバースプロキシを使ってnginxにだしているなどのケースで使えるかはわかりません。あくまで現象がおきたのがnginx+Apacheの場合になります。
nginxのconfファイルに追記
ここではdefault.confに追記するとします。
[c]
proxy_set_header X-Forwarded-Proto https;
[/c]
これを追記します。実際に追記したファイルはこんな感じになります。
[c]
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
location / {
proxy_pass http://127.0.0.1:8080; # tornado(アプリケーション・サーバー)が8000でlistenしているとする
root /var/www/vhost/site-lab/html;
ssi on;
ssi_last_modified on;
index index.html index.htm;
break;
}
[/c]
wp-config.phpに追記
[php]
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
[/php]
これ以外に、define('FORCE_SSL_ADMIN', true);を追加する方法もあるみたいですが、このやり方はリバースプロキシには不向きらしいので上記のやり方がいいみたいです。
このページにアクセスする権限がありません

ログインしたらこの画面が出た場合は、書く位置を間違えている可能性があります。デバッグモードの下にかいているかもしれませんので上に持ってきます
[php]
/**
* WordPress データベーステーブルの接頭辞
*
* それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
* インストールすることができます。半角英数字と下線のみを使用してください。
*/
$table_prefix = 'wp_';
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
/**
* 開発者へ: WordPress デバッグモード
*
* この値を true にすると、開発中に注意 (notice) を表示します。
* テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
*
* その他のデバッグに利用できる定数については Codex をご覧ください。
*
* @link http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
*/
[/php]
デバッグモードの上に移動すれば問題なく表示されます
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS