nginx+ApacheのリバースプロキシでSSLエラーが出たときの対処法
GCEにてnginx+Apacheのリバースプロキシをしているサイトを制作しました。この中でちょっと無限ループなどが起きたので対処法を書いておきます。
リバースプロキシを使用しているケースとなります
nginx単体や、nginxにてリバースプロキシを使ってnginxにだしているなどのケースで使えるかはわかりません。あくまで現象がおきたのがnginx+Apacheの場合になります。
nginxのconfファイルに追記
ここではdefault.confに追記するとします。
proxy_set_header X-Forwarded-Proto https;
これを追記します。実際に追記したファイルはこんな感じになります。
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; }
wp-config.phpに追記
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) { $_SERVER['HTTPS']='on'; }
これ以外に、define('FORCE_SSL_ADMIN', true);を追加する方法もあるみたいですが、このやり方はリバースプロキシには不向きらしいので上記のやり方がいいみたいです。
このページにアクセスする権限がありません
ログインしたらこの画面が出た場合は、書く位置を間違えている可能性があります。デバッグモードの下にかいているかもしれませんので上に持ってきます
/** * 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 */
デバッグモードの上に移動すれば問題なく表示されます
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS