nginxを使って、WordPressとPlay frameworkへのリバースプロキシー
目的
サイトを運営するにあたり、製品紹介や案内などを WordPressで管理し、製品の実体を Play frameworkで実装することなりました。 一つのサイトとして見せるために、同じサーバ内で稼動している WordPress と Play framework へのリバースプロキシーをnginxで実現します。
パスが「/」のTOPページと製品紹介の /product
配下をWordPressに転送し、それ以外を Play frameworkに転送します。
TCP/IPのポート番号はそれぞれ、 nginxが80番、WordPressが8003番、Play frameworkが9003番です。
nginxの設定
server { listen 80; server_name prod.example.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; # proxy_redirect true; proxy_max_temp_file_size 0; location = / { proxy_pass http://www.xxx.yyy.zzz:8003; } location ^~ /product/ { proxy_pass http://www.xxx.yyy.zzz:8003; } location / { proxy_pass http://www.xxx.yyy.zzz:9003; } }
proxy_set_header Host $http_host
がないとWordPressでリダイレクトの無限ループが発生します。
WordPressの設定
WordPressは dockerコンテナを用意しました。dockerコンテナには apacheとmariaDBをインストールし、WordPressが利用できる状態になっています。
サブディレクトリにインストール
WordPressはサブディレクトリ /product
にインストールして、/
はWordPressのフロントページが表示されるようにします。
seo.siyo.org
ログインのURLは /product/wp-login.php
になり、cssなどは /product/wp-includes/css/admin-bar.min.css?ver=4.2.1
になります。
パーマリンクの設定
カスタム構造にして、設定値を「/product/%category%/%postname%/」にしました。 「/feed」などのRSSフィードなどには対応できませんが今回は提供しないのでヨシとします。
Play frameworkの設定
ポート番号以外は特段の設定変更はありません。