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をいじるのがいいんじゃないかと思う。