nginxでFuelPHPを使うためのrewrite設定方法

nginxよくわかんないよ(´;ω;`)

最近ちょこちょこいじっているのですが、設定周りでapacheと勝手が違う部分が多々あり苦労してます。

特にrewriteモジュールの記述の仕方があまりよく分かりません。FuelPHPを使いたいのでどうしても必要なのですが、肝心のところで結構ハマってました。

一度コツを掴むとapacheよりだいぶシンプルで書きやすいのですが、一応忘れてしまった時のためにメモメモ……

rewriteに至る基本的な流れは、

指定のURIに一致するファイルがあるか調べる → なかったらディレクトリがあるか調べる → それもなかったらrewriteする

と言った感じです。この部分はnginxのtry_files構文で簡単に書けます。

「location @rewrite…」から始まるlocationディレクティブは、「名前付きロケーション」と言うみたいです。内部リダイレクト処理を行う際に、アットマークから始まる名前を指定すると、その名前がついたブロック内の処理を行います。詳しくはnginxのドキュメントを参照してください。→http://wiki.nginx.org/HttpCoreModuleJa#location

ちなみに、try_filesを使わなくてもif文を利用すれば前述の流れは実現できますが、やたら長くなるし、nginx的には非推奨らしくいいとこなしなので、素直にtry_filesを利用するほうがいいと思います。
参考リンク: nginxのifに要注意 TECHSCORE BLOG

そして、ファイル・ディレクトリが存在しなかった場合のリライト処理ですが、俺は以下のように書きました。

このあたりの書き方は個人差・環境差があるので一概には言えませんが、自分の手元の環境ではこれで動作しました。

書き方はリファレンスを参照!!→http://wiki.nginx.org/HttpRewriteModuleJa#rewrite

ここに書いてあることを更に凝縮して、しかも分かりやすい記事があるので、そちらを読んだほうが幸せになれるかもしれません……
参考リンク: nginx連載5回目: nginxの設定、その3 – locationディレクティブ – インフラエンジニアway – Powered by HEARTBEATS 

 

Raspbian(RaspberryPi)でnginx+php-fpmを動かしてみる。

完全に自分用ですが。

nginxとphp-fpmを動かしてみたかったので、部屋に転がってたRaspberryPiにインストールしてみました。

とりあえず必要なパッケージをインストール。

依存パッケージはaptitudeの方で全部拾ってきてくれるはず。

ちなみにバージョンはnginxが1.2.1 php5-fpmは5.4.4です。

 

次にnginxの設定。デフォルトの設定ファイルの中から特に書き換えた部分だけ抜き出してます。

 

nginx, php-fpmの起動。

最後に起動設定の変更。

 

これでサイトルートの中にphpinfo();でも書いたphpファイルを投げ込んでアクセスできるかどうか試したらいいと思います。

 

一番ハマったポイントはfastcgi_passの値です。いろいろなブログの記事を読んでみても、設定値は「127.0.0.1:9000」にしろ~って書いてあるのですが、残念ながら俺のオツムではよく分からず……。でもnginxのデフォルト設定ファイルにはもう一つ、sockファイルを入力する方法も併記されておりまして、そちらのパスを通してみたらうまく動きました。とりあえず動いたのでこれでよしということで(´・ω・`)