Index & Autoindex

Index & Autoindex #

Ketika browser meminta sebuah direktori (URL diakhiri /), Nginx perlu memutuskan apa yang harus ditampilkan. Ada dua kemungkinan: menampilkan sebuah file index yang sudah ditentukan, atau menampilkan daftar isi direktori secara otomatis. Dua directive yang mengontrol ini adalah index dan autoindex.

Directive index #

index mendefinisikan file apa yang dicari Nginx ketika request mengarah ke direktori:

server {
    root /var/www/html;

    # Cek index.php dulu, lalu index.html, lalu index.htm
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Nginx mencoba file-file dalam daftar secara berurutan dan menggunakan yang pertama ditemukan. Jika index.php ada, itu yang digunakan. Jika tidak, coba index.html, dan seterusnya.

Lokasi yang tepat untuk directive index #

index bisa diletakkan di context http, server, atau location. Tapi ada aturan inheritance yang penting:

server {
    root /var/www;

    # Definisikan di level server — diwarisi semua location
    index index.html index.htm;

    location /app/ {
        # Override untuk direktori ini — butuh index.php
        index index.php index.html;
    }

    location / {
        # Mewarisi dari server: index.html index.htm
    }
}

Directive autoindex #

autoindex mengaktifkan directory listing — Nginx menampilkan daftar file dan folder dalam direktori ketika tidak ada file index:

location /downloads/ {
    root /var/www;
    autoindex on;
}

Ketika autoindex on aktif dan tidak ada file index, Nginx menghasilkan halaman HTML sederhana yang menampilkan nama file, ukuran, dan tanggal modifikasi.

Format tampilan autoindex #

location /files/ {
    alias /data/shared/;
    autoindex on;

    # Format waktu — on: format lokal, off: GMT
    autoindex_localtime on;

    # Batasi panjang nama file yang ditampilkan (0 = tidak dibatasi)
    autoindex_exact_size off;   # off: tampilkan dalam KB/MB/GB, bukan bytes
}

Kapan Menggunakan autoindex #

autoindex berguna untuk beberapa kasus spesifik:

Server file internal — berbagi file di jaringan internal tim atau kantor tanpa perlu aplikasi khusus.

Mirror software — banyak mirror repository Linux menggunakan autoindex untuk browsing direktori.

Temporary file sharing — berbagi file sementara di server development.

# Contoh: server file internal, hanya accessible dari jaringan lokal
server {
    listen 80;
    server_name files.internal.company.com;

    root /data/shared;

    # Batasi akses hanya dari jaringan internal
    allow 192.168.0.0/16;
    allow 10.0.0.0/8;
    deny all;

    location / {
        autoindex on;
        autoindex_localtime on;
        autoindex_exact_size off;
    }
}

Keamanan: Kapan autoindex Harus Dinonaktifkan #

autoindex dalam kondisi default adalah off, dan sebaiknya tetap begitu untuk website production. Mengekspos daftar file bisa membocorkan informasi sensitif tentang struktur aplikasi, file konfigurasi yang tidak sengaja tersisa, atau file backup.

# Pastikan autoindex off di root website (ini sudah default, tapi eksplisit lebih baik)
server {
    root /var/www/html;
    autoindex off;

    # Jika butuh autoindex di subdirektori tertentu saja:
    location /public-files/ {
        autoindex on;
        autoindex_exact_size off;
    }

    # Pastikan direktori sensitif tidak bisa di-browse
    location /admin/ {
        autoindex off;   # Eksplisit, meskipun sudah default
    }
}
Jangan pernah aktifkan autoindex di direktori yang mengandung file konfigurasi, file environment (.env), script, atau file backup. Listing direktori bisa mengekspos path file yang kemudian digunakan penyerang untuk merencanakan serangan lebih lanjut.

Apa yang Terjadi Jika Tidak Ada index dan autoindex off #

Jika request ke direktori, tidak ada file index yang ditemukan, dan autoindex off:

Request: GET /gallery/
Tidak ada: /var/www/html/gallery/index.html
autoindex: off

→ Nginx mengembalikan 403 Forbidden

Ini kadang membingungkan pengguna yang melihat 403 padahal direktori ada. Solusinya: pastikan file index ada, aktifkan autoindex (jika memang diinginkan), atau gunakan try_files untuk fallback ke halaman lain.


Ringkasan #

  • index mendefinisikan file yang dicari saat request ke direktori — urutan pengecekan sesuai urutan di directive.
  • autoindex on mengaktifkan directory listing — berguna untuk server file internal, berbahaya untuk website production.
  • autoindex_exact_size off dan autoindex_localtime on membuat tampilan listing lebih ramah dibaca.
  • Jika tidak ada file index dan autoindex off, Nginx mengembalikan 403 Forbidden — bukan 404.
  • Nonaktifkan autoindex di seluruh site secara eksplisit, lalu aktifkan hanya di direktori tertentu yang memang membutuhkannya.

← Sebelumnya: Root & Alias   Berikutnya: Custom Error Page →

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact