それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

wordpress をniginx のリバースプロキシの背後に設置した場合の mixed contents 対策

nginx の背後に wordpress を設置したら mixed content

wordpress を設置したんだけど、 .htaccess も使いたいと言われて、nginx から apache+php-fpm にリバースプロキシをした。するとhttp/https混在コンテンツになってしまった。

対策。

nginx → apache で リバースプロキシするさい X-Forwarded-Proto を追加する。

nginx 側

     proxy_set_header X-Forwarded-Proto https;

nginx などリバースプロキシでhttpsだとメモを残してヘッダにつけて送る(今回は HTTP_X_FORWARDED_PROTO  を使う)

wordpress 側 wp-config.php

<php
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){
  $_SERVER['HTTPS']='on';
  }

HTTP_X_FORWARDED_PROTOをphp 側で受け取って HTTPS 変数を上書きする。

その他の対策方法

  • nginx → apache2 のリバースプロキシをオレオレ証明書https でやるとか。
  • apache2→ php-fpm で構成して apache2 から https だよと宣言するとか

まぁいろいろと考えられるけど、一番手っ取り早いのは wp-config.php を弄ることだった。

これは、CloudflareやAWS ELB などでHTTPSをONにした場合にも同じことが言える。