リバースプロキシ環境でWordPressの管理画面アクセスをhttpsにするには

WordPressの管理画面へのアクセスについてSSLによるアクセスを強制するには、「define('FORCE_SSL_LOGIN', true);」をwp-config.phpへ指定します。http://example.jp/, https://example.jp/wp-admin/ のような組み合わせでサーバが1台構成なら、簡単に実現できます。

単純なシステム構成のときは、これでよいのですが、リバースプロキシと組み合わせる場合は、もう少し設定が必要です。

まず、リバースプロキシを使うときには、次のような設定が必要になります。

$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];

また、実際のサイトURLを提供するサーバと稼動させているサーバが違うので、次のような設定が必要になります。(WP_CONTENT_URLの指定は必要に応じて)

define('WP_SITEURL', 'https://example.jp/wordpress'); 
define('WP_HOME', 'https://example.jp/wordpress'); 
define('WP_CONTENT_URL', 'https://example.jp/wordpress/wp-content');

WordPressは簡単に導入できるようになっているため、ちょっとトリッキーなことをしようとすると動きませんが、これぐらいならできるわけですね。

ちなみに、公開はhttpで、管理画面はhttpsとして、httpのホストとhttpsのホストが一致していないURLで動作させることはできないようです。たとえば、http://example.jp/web/ を公開URLにして、https://system.example.jp/web/wp-admin/ を管理画面にする、みたいなことはできないのですね。MTOSだとできます。SSL通信路の確保はそれなりにコストがかかるので、公開URLと管理用URLのホスト名を別々にしたいことはよくあるのですが、簡単に実現する方法がないようなので、なんとかならないかなぁ、と考えているところです。

同じタグの記事: Linux
同じタグの記事: PHP
同じタグの記事: WordPress
同じカテゴリの記事: Linux
関連書籍: PHP
関連書籍: WordPress