Menyajikan website statis menggunakan Nginx adalah salah satu fungsi paling dasar dan umum. Website statis biasanya berisi file HTML, CSS, JavaScript, gambar, dan aset lain yang tidak memerlukan backend dinamis.
Bab ini membahas cara mengatur root folder, file index default, custom error page, dan MIME types.
Contents
1. Menyajikan File HTML, CSS, dan JS
Website statis di Nginx disajikan dari root folder yang telah ditentukan di server block. Misal struktur folder:
/var/www/html/mysite/
├── index.html
├── about.html
├── css/
│ └── style.css
├── js/
│ └── script.js
└── images/
└── logo.png
Contoh Server Block Nginx:
server {
listen 80;
server_name mysite.com www.mysite.com;
root /var/www/html/mysite;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Penjelasan:
root→ folder tempat Nginx mencari file websiteindex→ file default saat mengakses root atau direktori, misal/var/www/html/mysite/akan menampilkanindex.htmltry_files $uri $uri/ =404;→ mencegah error jika file tidak ditemukan, menampilkan error 404
2. Konfigurasi Root Folder
Root folder adalah direktori tempat seluruh file website statis disimpan. Beberapa hal yang perlu diperhatikan:
- Pastikan permission folder benar, biasanya
www-datasebagai owner:
sudo chown -R www-data:www-data /var/www/html/mysite
sudo chmod -R 755 /var/www/html/mysite
- Gunakan path absolut di server block:
root /var/www/html/mysite;
- Struktur folder minimal:
/mysite
├── index.html
├── css/
├── js/
└── images/
3. Index File Default
File index adalah halaman yang otomatis dimuat saat user mengakses root folder atau subfolder.
Contoh konfigurasi:
server {
root /var/www/html/mysite;
index index.html index.htm;
}
Tips:
- Urutan
index.html index.htm→ jikaindex.htmltidak ada, Nginx akan memeriksaindex.htm - Bisa ditambahkan file lain untuk fallback, misal
index.phpjika menggabungkan dengan backend
4. Mengatur Error Page Custom
Nginx memungkinkan menampilkan halaman error khusus untuk kesalahan seperti 404, 403, atau 500.
Contoh konfigurasi:
server {
root /var/www/html/mysite;
index index.html;
error_page 404 /404.html;
location = /404.html {
internal;
}
error_page 403 /403.html;
location = /403.html {
internal;
}
}
Penjelasan:
error_page 404 /404.html;→ redirect semua error 404 ke halaman custom/404.htmlinternal;→ halaman tidak bisa diakses langsung oleh user, hanya melalui error handler- Letakkan file
404.htmldan403.htmldi folder root
5. Mengatur MIME Types
MIME types menentukan jenis file yang dikirim ke browser. File CSS, JS, gambar, atau font harus memiliki MIME type yang tepat agar browser bisa menampilkannya dengan benar.
Konfigurasi default:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
}
File /etc/nginx/mime.types berisi contoh:
text/html html htm shtml;
text/css css;
application/javascript js;
image/jpeg jpeg jpg;
image/png png;
image/gif gif;
application/font-woff woff;
application/font-woff2 woff2;
Tips:
- Jangan lupa reload Nginx setelah mengubah MIME types:
sudo nginx -t
sudo systemctl reload nginx
6. Contoh Server Block Lengkap untuk Website Statis
server {
listen 80;
server_name mysite.com www.mysite.com;
root /var/www/html/mysite;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# Custom error pages
error_page 404 /404.html;
location = /404.html {
internal;
}
error_page 403 /403.html;
location = /403.html {
internal;
}
# Static file caching
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
}
Keterangan:
- Menyajikan HTML, CSS, JS, gambar
- Mengatur index file default
- Menampilkan halaman error custom
- Memberikan cache untuk static assets agar loading lebih cepat
Kesimpulan
Hosting website statis di Nginx membutuhkan:
- Menentukan root folder tempat file HTML, CSS, JS, dan aset lain
- Menentukan index file default agar halaman utama otomatis ditampilkan
- Mengatur error page custom untuk pengalaman pengguna lebih baik
- Memastikan MIME types diatur agar file dikirim ke browser dengan benar
- Menyertakan caching static assets untuk performa optimal
Dengan konfigurasi ini, Nginx dapat menyajikan website statis dengan stabil, cepat, dan profesional.