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 aktifkanautoindexdi 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 #
indexmendefinisikan file yang dicari saat request ke direktori — urutan pengecekan sesuai urutan di directive.autoindex onmengaktifkan directory listing — berguna untuk server file internal, berbahaya untuk website production.autoindex_exact_size offdanautoindex_localtime onmembuat tampilan listing lebih ramah dibaca.- Jika tidak ada file index dan
autoindex off, Nginx mengembalikan 403 Forbidden — bukan 404.- Nonaktifkan
autoindexdi seluruh site secara eksplisit, lalu aktifkan hanya di direktori tertentu yang memang membutuhkannya.