Skip to content

Ubuntu の Nginx で autoindex を使い、ファイル・ディレクトリの一覧を表示する

Nginx で autoindex 機能を使うとディレクトリへアクセスされた際、そのディレクトリ中に存在するファイルやディレクトリの一覧を表示させることが出来ます。 今回は (Ubuntu 標準リポジトリでは無く) Nginx 公式リポジトリから Nginx をインストールし、autoindex を有効化する手順をメモしておきます。

検証環境

対象 バージョン
Ubuntu 24.04.2 LTS
Nginx 1.26.3

Nginx のインストール

Nginx 公式リポジトリから Nginx をインストールする手順は 公式サイト に記載されています。 記載されている手順に従ってインストールします。

sudo apt -y install curl gnupg2 ca-certificates lsb-release ubuntu-keyring && \
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null && \
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list && \
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx && \
sudo apt update && \
sudo apt -y install nginx

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

ファイル・ディレクトリを表示する際に邪魔になる為、デフォルトの index.html ファイルは削除します。

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

Apache 風ドキュメントルートのシンボリックリンクを作成

Nginx のドキュメントルートはデフォルトで /usr/share/nginx/html に設定されています。 これは階層が深く、やや覚えづらい為、Apache のドキュメントルートである /var/www/html が使えるようにシンボリックリンクを追加します。

mkdir -p /var/www/ && \
rm -rf /var/www/html/ && \
ln -s /usr/share/nginx/html /var/www/

autoindex を有効化する

autoindex を有効化します。 Nginx の設定ファイルは /etc/nginx/conf.d/default.conf にあります。 これを以下のように修正します。

変更前 (コメント除外版)

/etc/nginx/conf.d/default.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /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;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        autoindex on;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Nginx を開始する

systemctl start nginx.service
systemctl enable nginx.service

Web ブラウザでアクセスする

Web ブラウザでディレクトリへアクセスしてみると以下のように「ディレクトリ内のファイル/ディレクトリ一覧」が表示されます。

file