Last updated:2016-06-27

nginx環境の本番サーバー(外部)とインポート・リリース機能を使う場合


nginxサーバーの場合

universionsで用意されているプレビュー用のサーバーはApacheとよばれるWebサーバーサービスを利用しています。そのためWordPress専用サーバーでも採用例が増えているnginxのWebサーバーでは別途対応が必要になる場合がございます。

インポート元がnginxサーバーの場合

想定しうる差異

  • .htaccess(Apacheで利用)が効かない
    • nginxではconfファイルに記載するため、下層ディレクトリ毎に設定できる.htaccessを利用することができません。

対応策

Apache上で動くWordPressでは、リダイレクト(転送)処理を.htaccessに記載して実現しています。

本番サーバーがnginxであったとしても、WordPressが自動的に.htaccessを作成・編集する機能を備えているため、ほとんどの場合で問題なくインポートすることができます。

TOPページは見れても、記事をクリックしてもみれない場合は、リダイレクト(転送)処理が正常に行われていないケースです。
インポートしたプレビューサーバで管理画面にログインし、パーマリンクを再度設定してください。

WordPressパーマリンク設定:
[プレビューサーバーURL]/wp-admin/options-permalink.php

リリース先がnginxサーバーの場合

インポートしたサーバーにリリースする場合は、ほとんどの場合問題ありませんが、以下のケースでは設定が必要な可能性があります。

  • インポート環境では設定してなかったパーマリンク設定を変えた場合
  • インポートしたサーバーとは異なるnginxを利用したサーバーにリリースする場合

対応策

nginxの設定ファイルに、WordPressのリダイレクト設定を書く必要があります。以下に一例としてサンプルを掲載しますが、お客様自身の環境や意図する動作にあわせて設定内容は異なりますので、自己責任にてご参考ください。

nginxの設定例

server {
    listen       80;
    server_name  universions.com;
    root         /var/www/wordpress;
    index        index.php

    charset utf-8;

    location / {
        try_files $uri $uri/ @wordpress;
    }

    location ~ \.php$ {
        try_files $uri @wordpress;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME  /var/www/wordpress$fastcgi_script_name;
        include       fastcgi_params;
    }

    location @wordpress {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME  /var/www/wordpress/index.php;
        include       fastcgi_params;
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

以下の部分がWordPressのリダイレクト用の設定になります。

location / {
        try_files $uri $uri/ @wordpress;
}

service nginx configtestと打つことで、文法チェックも行えます。