Skip to content

Nginx で Fancy Index を有効化し、DirectoryIndex 表示を改善する

Nginx へ Fancy Index をインストールし、Directory Index 画面の見栄えを改善してみました。 Rocky Linux8 で作業した際の手順をメモしておきます。

Fancy Index のダウンロード

Nginx 用の Fancy Index ですが、RPM 化したパッケージが下記で公開されています。 但し、必ずしも最新の Nginx バージョンに追従しているわけでは無い ようですのでバージョン管理には要注意です。

(Nginx 用の) Fancy Index モジュールは当然ですが Nginx へ依存性がある為、Nginx のリポジトリを追加し、その上で Fancy Index をインストールします。

1
2
dnf config-manager --add-repo https://s3.sig9.org/repos/nginx.repo
dnf -y install https://github.com/jfut/nginx-module-fancyindex-rpm/releases/download/v0.5.2-1/nginx-module-fancyindex-0.5.2-1.module_el8.1.20.x86_64.rpm

今回は以下のバージョンがインストールされました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# dnf info nginx nginx-module-fancyindex
Last metadata expiration check: 0:00:27 ago on Sun Dec 12 11:06:07 2021.
Installed Packages
Name         : nginx-module-fancyindex
Version      : 0.5.2
Release      : 1.module_el8.1.20
Architecture : x86_64
Size         : 50 k
Source       : nginx-module-fancyindex-0.5.2-1.module_el8.1.20.src.rpm
Repository   : @System
From repo    : @commandline
Summary      : Nginx module to use PAM for simple http authentication
URL          : https://github.com/sto/ngx_http_fancyindex_module
License      : BSD-2-Clause
Description  : Nginx module to use PAM for simple http authentication.

Name         : nginx
Epoch        : 1
Version      : 1.20.0
Release      : 1.el8.ngx
Architecture : x86_64
Size         : 2.8 M
Source       : nginx-1.20.0-1.el8.ngx.src.rpm
Repository   : @System
From repo    : nginx-stable
Summary      : High performance web server
URL          : https://nginx.org/
License      : 2-clause BSD-like license
Description  : nginx [engine x] is an HTTP and reverse proxy server, as well as
             : a mail proxy server.

Available Packages
Name         : nginx
Epoch        : 1
Version      : 1.20.2
Release      : 1.el8.ngx
Architecture : x86_64
Size         : 820 k
Source       : nginx-1.20.2-1.el8.ngx.src.rpm
Repository   : nginx-stable
Summary      : High performance web server
URL          : https://nginx.org/
License      : 2-clause BSD-like license
Description  : nginx [engine x] is an HTTP and reverse proxy server, as well as
             : a mail proxy server.

Fancy Index モジュールのロード

/etc/nginx/nginx.conf を下記のように変更し、Fancy Index モジュールをロードします。

変更前

1
2
3
4
5
6
7
8
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
    ・
    ・
    ・

変更後

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
user  nginx;
worker_processes  auto;

load_module "modules/ngx_http_fancyindex_module.so";

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
    ・
    ・
    ・

ドキュメントルートを変更する (リンクを追加する)

Rocky Linux に Nginx を公式リポジトリからインストールする からの再掲です。 デフォルトでは /usr/share/nginx/html がドキュメントルートに設定されています。 これは /etc/nginx/conf.d/default.conf で定義されています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
server {
    listen       80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    ・
    ・
    ・

Apache に揃えてドキュメントルートを /var/www/html にしたい場合は /etc/nginx/conf.d/default.conflocation 設定を修正しても良いですが、リンクを作成しても良いと思います。 以下ではシンボリックリンクを設定しています。

1
2
mkdir -p /var/www/
ln -s /usr/share/nginx/html /var/www/html

Fancy Index の設定

Fancy Index を有効化する為に /etc/nginx/conf.d/default.conf を以下のように変更します。

変更前

1
2
3
4
5
6
server {
    listen       80;
    server_name  localhost;
    ・
    ・
    ・

変更後

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
server {
    listen       80;
    server_name  localhost;

    fancyindex on;
    fancyindex_exact_size on;
    fancyindex_localtime on;
    ・
    ・
    ・

デフォルトの index.html を削除する

Nginx をインストールした直後はドキュメントルート直下に 50x.htmlindex.html が保存されます。 これは Nginx のアップグレード / ダウングレードなどが発生した場合も再度、保存されると思われます。

1
2
# ls /usr/share/nginx/html/
50x.html  index.html

今回は index.html を利用しないので削除しておきます。

1
rm -f /usr/share/nginx/html/index.html

Nginx を起動する

設定が完了したので Nginx を起動します。

1
2
systemctl start nginx.service
systemctl enable nginx.service

DirectoryIndex を表示する

「Nginx 標準の autoindex」と「Fancy Index」を比較してみます。

Nginx 標準の autoindex

下記は Nginx 標準の autoindex です。

file

Fancy Index

下記は Fancy Index です。

file