joppot

コピペで絶対動く。説明を妥協しない

wordpressをnginxでsubdirectoryに配置する

   

Pocket

nginx_sub_top_thumb

概要

みなさんこんにちはcandleです。
今回はnginxを使って、サブディレクトリにwordpressを配置してルーティングを行う方法を紹介します。
実はこれ、結構苦労しました。わりと文献はあるのですが、私の場合はうまくいきませんでした。
多分、ここで紹介する方法はうまくいきます。

この記事では以下のような方法を紹介します。

例えば、/usr/share/nginx/alice_blogにwordpressを置いた時に、

http://alice_blog.com/blog

でwordpressにアクセスできるようにします。


前提

適当なwordpressとnginxサーバがある。

SPONSORED LINK



nginxの設定する

私はvagrantのcentos6.5、nginx1.8、php5.3で作業します。
色々試した結果、nginxとphpのバージョンはなんでもかまいません。

現在、nginxの設定ファイルを/etc/nginx/conf.d/default.conf に置いて、中身が、以下のようになっています。

server {
  listen       80;
  server_name  alice_blog.com;
  root         /usr/share/nginx/alice_blog;
  charset      utf-8;

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

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

  location ~ \.php$ {
    #fastcgi_pass   phpfpm;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
  }
}

vagrantなので、IPアドレスは「192.168.33.10」にアクセスすると、現在は以下のようなルーティングになります。

http://192.168.33.10/wp-admin/install.php

vagrantok

ではこれを、http://192.168.33.10/blog/wp-admin/install.php でアクセスできるように変更します。
/etc/nginx/conf.d/default.confを開いて、以下のように変更します。

server {
  listen       80;
  server_name  alice_blog.com;
  #root         /usr/share/nginx/alice_blog;
  charset      utf-8;

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

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

  location ^~ /blog {
    alias /usr/share/nginx/alice_blog;
    index index.php index.html index.htm;
    try_files $uri $uri/ @wp;

    location ~ \.php$ {
      include fastcgi_params;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index  index.php;
      fastcgi_param SCRIPT_FILENAME $request_filename;
    }
  }
}

保存したら、nginxを再起動します。

sudo service nginx restart

今度は/blogをつけてアクセスします。

http://192.168.33.10/blog

blog_url
こうすると、うまくいきますね。

気をつけて欲しいのはrootを定義しないことです。
rootではなくて、aliasを使うことがキモです。
それと@wpというのが出てきていますが、これはなんでもよいっぽいです。

まとめ

私の場合はこれでうまくいっていますが、もし、質問があれば、下のコメント欄からお願いします。

 - サーバ ,