nginxでfancyindex

とあるディレクトリ一覧を表示するのに autoindex は結構便利。
だけど表示がシンプルすぎてせめてスタイルシートが使えればなぁと思うことがしばしば。

apacheでもfancyindexってのがあるんで、nginxでもあるかなと思ったらやっぱりあった。
makeしなおさなきゃならんのがめんどいけど、とりあえずできたんで備忘録として。

debの作成

手順はこんな感じ

1. ngx-fancyindexを取ってくる。
2. nginxのソースを展開する。
3. configureでfancyindexを追加する。
4. makeしてインストール。

自分の環境は Debian wheezy なんで、せっかくだからdebにすることにした。
nginx-fullを使ってるけど、nginx-lightでもきっと手順は一緒のはず。

$ su
# vi /etc/apt/source.list
  ソース用のapt line を追記 (例 deb-src http://ftp.jp.debian.org/debian/ wheezy main contrib)
# aptitude update
# aptitude build-dep nginx
# exit
$ git clone git://gitorious.org/ngx-fancyindex/ngx-fancyindex.git ngx-fancyindex
$ apt-get source nginx-full
$ cd nginx-#.#.#
$ cp -r ../ngx-fancyindex debian/module
$ vi debian/rules
  config.status.full を探して、 --add-module=$(MODULESDIR)/ngx-fancyindex \ を追記する。
$ vi debian/changelog  (せっかくだから以下のようなのを先頭に追記してバージョン更新)
nginx (#.#.#-#+custom-1) unstable; urgency=low

   * Add module (fancyindex).

 -- 名前 <名前@localhost>  日付

$ dpkg-buildpackage -us -uc -b -rfakeroot

しばらくすると作業ディレクトリの一つ上にdebができあがるので、common と full をインストールする。
debian/changelog は編集しなくてもdebは作成されるけど、まぁこれは好みで。

fancyindexの設定

なんかドキュメントがわかりにくかったんでまとめ。

fancyindex
on に設定すればいい。
fancyindex_localtime
on にすると日時がローカル時刻になる。offならGMT
fancyindex_header
ドキュメントルートからのパスを記述すると、そこにアクセスし取得した内容でヘッダを置き換える。
fancyindex_footer
ドキュメントルートからのパスを記述すると、そこにアクセスし取得した内容でフッタを置き換える。
fancyindex_css_href
指定したcssへのパスを内に追記する。fancyindex_headerが設定されているときは無視される。
fancyindex_ignore
一覧表示から除外(表示しない)するものを記述する。該当ファイル名を正規表現で記述し、複数指定はスペース区切り。

生成されるHTMLはこんな感じ。

(fancyindex_header)(表示しているパス)</h1>(パスの一覧テーブル)(fancyindex_footer)


デフォルトの設定をいじりたいなら ngx-fancyindex/template.h に記述されているので、そこをいじってmakeしなおし。

でもいちいちmakeしなおしてインストールなんてやってられないんで、あれこれ貪りたいなら fancyindex_header を動的ページにして、javascriptでHTMLをいじるのがいいんじゃないかと思う。