joppot

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

サーバ

wordpressをnginxでsubdirectoryに配置する

投稿日:


nginx_sub_top_thumb

概要

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

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

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

http://alice_blog.com/blog

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


前提

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



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というのが出てきていますが、これはなんでもよいっぽいです。

まとめ

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

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-サーバ
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

centos6.5にtd-agentサーバを構築する

English 日本語 概要 みなさん、こんにちはcandleです。 今回はcentos6.5にtd-agentサーバを構築してみたいと思います。 td-agentとは要はfluentdの事だと思いま …

ElastiCacheのmemcachedとEC2上のrailsとdalli-elasticacheを使ってキャッシュ管理する

概要 皆さんこんにちはcandleです。今回はaws上にあるElastiCacheというサービスを使って railsのキャッシュを管理したいと思います。 キャッシュというのはwebサービス上でよく使う …

td-agentでnginxのerror.logとaccess.logを取得する

English 日本語 概要 みなさんこんにちはcandleです。今回はtd-agentでnginxのログを収集します。 td-agentで解説しますが、fluentdと設定は基本的に同じになると思う …

macにmemcachedをインストールする方法と動作確認

概要 memcachedはrailsやphpのセッションを保持しておく時に使うソフトというかサーバ的なものです。一般にSNSやログイン式のサービスを提供する時はセッションというのを持ちます。セッション …

fluentdのs3 pluginを使用して日付区切りでログデータをS3に送信する

概要 みなさんこんにちはcandleです。今回はfluentdのs3プラグインを使用して、railsなどのログを日単位でS3に投げる方法を紹介します。もちろん、応用して年単位とか月単位、時間単位で区切 …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー