Penyebab 403 Forbidden pada NGINX dan Cara Mengatasinya

Pelajari cara mengatasi error 403 Forbidden di website berbasis NGINX, mulai dari pengecekan izin file, konfigurasi server, hingga kontrol akses. Ikuti langkah-langkahnya agar situsmu bisa normal kembali!

Waktu baca: 9 menit • Lihat progres baca di bar atas
Oleh Fikri Andra Irham
Dipublikasikan 22 Juli 2025

Halo, Kawan Belajar!

Pada kesempatan kali ini, kami akan membantu Anda memahami dan mengatasi error 403 Forbidden yang muncul pada website yang menggunakan NGINX. Error ini dapat terjadi karena berbagai alasan, mulai dari konfigurasi yang kurang tepat hingga kendala pada akses file atau direktori.

Artikel ini akan membahas beberapa kemungkinan penyebab serta solusi untuk mengatasinya. Yuk, simak langkah-langkahnya agar website Anda bisa kembali normal dan lancar diakses!

Gambar 1: Akses Website Forbidden

Informasi Environment yang Digunakan

Berikut adalah spesifikasi perangkat lunak yang digunakan dalam artikel ini:

  • Sistem Operasi: Ubuntu 24.04.1 LTS
  • NGINX: 1.24.0
  • PHP: PHP 8.3

1. Ketidaksesuaian Izin Akses File atau Direktori#

Konfigurasi izin file atau direktori yang tidak sesuai dapat menyebabkan 403 Forbidden pada NGINX. Izin file mengatur siapa yang dapat melakukan tindakan tertentu (seperti membaca, menulis, atau mengeksekusi) pada file atau direktori. Jika izin terlalu ketat, Nginx mungkin tidak dapat mengakses file atau direktori yang diperlukan, sehingga memunculkan error ini.

Tahapan pelesaikan kendala:

a. Periksa izin file atau direktori. Gunakan perintah berikut untuk memeriksa izin file atau direktori yang menyebabkan error:

ls -l <nama_direktori>

Gambar 2: Melihat Isi Folder Website

Tips: Kolom pertama dalam output (drwxr-xr-x atau -rw-r--r--) menunjukkan izin file atau direktori. Pastikan izin ini sesuai dengan kebutuhan.

b. Sesuaikan izin file dan direktori. Pastikan Nginx memiliki izin yang cukup untuk membaca file dan direktori. Gunakan pengaturan berikut:

  • File: 640 (default 644)

  • Direktori: 750 (default 755)

chmod 644 <file_website> 
chmod 755 <direktori_website>

Gambar 3: Mengganti Hak Akses File dan Folder Website

Untuk mengatur izin seluruh file dan direktori dalam satu langkah, gunakan perintah berikut:

find <direktori_website> -type d -exec chmod 755 {} \;
find <direktori_website> -type f -exec chmod 644 {} \;

Gambar 4: Mengganti Hak Akses File dan Folder Website dengan Find

Catatan: Sesuaikan izin dengan kebutuhan aplikasi Anda untuk mencegah potensi risiko keamanan.

c. Perbaiki kepemilikan file dan direktori. Nginx memerlukan kepemilikan file dan direktori oleh pengguna dan grup yang sesuai.

 * **Sistem Debian/Ubuntu:** `www-data`
 * **Sistem RHEL/CentOS:** `nginx`
chown -R www-data:www-data <direktori_website>

Gambar 5: Mengganti Kepemilikan Folder Website

d. Verifikasi akses server ke file. Setelah izin dan kepemilikan disesuaikan, pastikan NGINX dapat membaca file dengan menjalankan:

sudo -u www-data bash -c "cat <file_website>"

Gambar 6: Memastikan NGINX Dapat Mengakses File Website

2. Kesalahan Konfigurasi Directives#

Kesalahan dalam konfigurasi directives (arahan konfigurasi) dapat menyebabkan error 403 Forbidden pada Nginx. Directives ini memberikan instruksi kepada server untuk menangani permintaan dan menyajikan file. Jika konfigurasi directives salah, tidak sesuai, atau saling bertentangan, Nginx mungkin tidak dapat menemukan atau menyajikan file atau direktori yang diminta, sehingga muncul error ini.

Tahapan penyelesaian kendala:

a. Buka file konfigurasi NGINX yang relevan. File konfigurasi utama Nginx biasanya berada di lokasi berikut:

/etc/nginx/nginx.conf (sistem berbasis Debian/Ubuntu dan RHEL/CentOS)
/usr/local/nginx/conf/nginx.conf (instalasi khusus atau sumber)

Tips: Untuk konfigurasi virtual host atau situs tertentu, biasanya berada di direktori /etc/nginx/sites-available/ atau /etc/nginx/conf.d/.

b. Periksa directive yang bermasalah. Cari directive seperti deny all, root, atau index yang mungkin salah konfigurasi.

  • Directive root: Pastikan direktori yang dirujuk oleh directive root benar-benar ada dan memiliki file yang dapat diakses.

  • Directive index: Pastikan file yang disebutkan dalam directive index tersedia di dalam direktori root.

  • Directive deny all: Pastikan directive ini tidak diterapkan pada direktori atau file yang seharusnya dapat diakses.

server {    
   listen 80;    
   server_name contohwebsite.com www.contohwebsite.com;    
   root /var/www/html;    
   index index.html index.htm;    
   location /
   {        
       try_files $uri $uri/ =404;    
   }
}

3. Masalah Kontrol Akses dan Otentikasi#

Kontrol akses berfungsi untuk menentukan siapa yang memiliki izin untuk mengakses file atau direktori tertentu, sementara mekanisme otentikasi bertugas untuk memverifikasi identitas pengguna sebelum memberikan akses ke sumber daya. Jika salah konfigurasi pada kontrol akses atau metode otentikasi, Nginx mungkin menolak untuk memberikan akses ke file atau direktori yang diminta, sehingga menghasilkan error 403 Forbidden.

Gambar 7: Akses URL Restricted Forbidden

Gambar 8: Akses URL Private Forbidden

Tahapan penyelesaian kendala:

a. Periksa Konfigurasi Akses di Nginx. Buka file konfigurasi website di Nginx dan periksa apakah ada aturan kontrol akses yang terlalu membatasi, seperti pembatasan akses ke direktori penting yang seharusnya dapat diakses oleh pengguna atau aplikasi.

Gambar 9: Pengaturan Akses yang Dibatasi

b. Sesuaikan kontrol akses untuk pengguna atau IP tertentu. Jika perlu, tambahkan kontrol akses yang lebih fleksibel untuk mengizinkan akses oleh IP atau pengguna tertentu.

Gambar 10: Menambahkan Alamat IP yang Dapat Mengakses URL

c. Periksa dan sesuaikan pengaturan file otentikasi (auth_basic). Pastikan bahwa direktori auth_basic_user_file yang Anda tetapkan dalam konfigurasi Nginx menunjuk ke file kata sandi yang valid, seperti file .htpasswd yang berisi informasi login pengguna.

Gambar 11: Menyuaikan Pengaturan File Httpasswd

Jika file .htpasswd tidak ada atau perlu diperbarui, buat terlebih dahulu dengan cara:

apt install apache2-utils  # Install `htpasswd` tool
htpasswd -c /etc/nginx/.htpasswd user1 # Membuat file .htpasswd baru

Gambar 12: Instalasi Apache2-Utils

Gambar 13: Membuat FIle .htpasswd Baru

Baca juga: Meningkatkan Keamanan Server dengan Mengubah Default Port SSH

4. Terblokir oleh Firewall atau Software Keamanan#

Kesalahan 403 Forbidden di Nginx dapat disebabkan oleh pemblokiran permintaan oleh firewall atau perangkat lunak keamanan seperti Fail2Ban. Firewall dirancang untuk melindungi server dari akses yang tidak sah atau ancaman berbahaya dengan memblokir alamat IP, protokol, atau permintaan tertentu. Namun, kesalahan konfigurasi atau deteksi yang keliru dapat menyebabkan permintaan yang sah diblokir, sehingga menghasilkan error 403 Forbidden.

Tahapan penyelesaian kendala:

a. Periksa aturan firewall saat ini. Periksa konfigurasi firewall yang aktif untuk menemukan aturan yang mungkin memblokir alamat IP, port, atau protokol tertentu.

  • IPTables:
iptables -L -n --line-numbers

Gambar 14: Melihat Daftar Rule IPTables

  • UFW:
ufw status verbose

b. Hapus aturan yang tidak perlu. Setelah menemukan aturan yang memblokir alamat IP atau port tertentu, hapus aturan tersebut agar permintaan dapat diterima.

  • IPTables:
iptables -D INPUT <nomor_rule>

Jika alamat IP yang digunakan diblokir pada aturan nomor 1:

Gambar 15: Menghapus Rule

  • UFW:
ufw delete deny from <alamat_IP>

c. Periksa pengaturan perangkat lunak keamanan. Jika Anda menggunakan perangkat lunak keamanan tambahan seperti Fail2Ban, periksa apakah alamat IP yang sah telah masuk ke dalam daftar blokir.

Langkah untuk Memeriksa Fail2Ban:

  • Periksa status Fail2Ban dan daftar blokir
fail2ban-client status
  • Periksa jails aktif dan IP yang diblokir:
fail2ban-client status <nama_jail>
  • Lepaskan blokir IP dengan perintah:
fail2ban-client unban

Contoh:
Jika alamat IP 192.168.1.101 diblokir dalam jail nginx-http-auth:

fail2ban-client unban 192.168.1.101

5. File dalam Format yang Salah#

Kesalahan 403 Forbidden pada Nginx dapat terjadi jika file yang diminta tidak disimpan dalam format yang sesuai atau dikenali oleh server. Format file yang salah, seperti ekstensi file yang tidak sesuai atau pengaturan tipe MIME yang tidak benar, dapat membuat Nginx tidak dapat memproses permintaan file tersebut, sehingga memunculkan error 403 Forbidden.

Tahapan penyelesaian kendala:

a. Periksa dan perbaiki ekstensi file. Jika file memiliki ekstensi yang salah, ubah ekstensinya ke format yang sesuai dengan tujuan penggunaannya.

Contoh: Jika file yang dimaksudkan untuk diproses sebagai PHP memiliki ekstensi .txt, ubah menjadi .php:

mv /var/www/html/hello.txt /var/www/html/hello.php

b. Periksa dan perbarui pengaturan MIME Types. Jika ekstensi file sudah benar tetapi Nginx tetap tidak dapat mengenali file tersebut, pastikan konfigurasi tipe MIME sudah sesuai.

nano /etc/nginx/nginx.conf

Pastikan baris berikut ada di dalam blok http:

include /etc/nginx/mime.types;

Jika Anda menggunakan format file yang tidak umum dan belum terdaftar di mime.types, tambahkan entri baru ke file /etc/nginx/mime.types.

Contoh: Untuk file dengan ekstensi .custom, tambahkan baris berikut:

types {
    text/custom custom;
}

c. Pastikan pengendali (handler) file telah dikonfigurasi dengan benar. Beberapa file, seperti PHP, memerlukan pengendali khusus untuk diproses dengan benar oleh Nginx. Pastikan konfigurasi handler PHP sudah diatur dengan benar di file konfigurasi virtual host atau blok server.

Gambar 16: Konfigurasi PHP pada Nginx

6. Kesalahan dalam Pembaruan Cache DNS dan Perubahan Host#

Kesalahan saat memperbarui cache DNS setelah mengubah host dapat menyebabkan kesalahan 403 Forbidden di Nginx. Jika cache DNS masih mengarah ke alamat IP lama, Nginx tidak akan dapat menyelesaikan nama domain ke alamat IP yang benar, dan permintaan akan diblokir, sehingga menghasilkan kesalahan 403 Forbidden.

Tahapan penyelesaian kendala:

a. Hapus cache DNS secara lokal. Langkah pertama adalah membersihkan cache DNS di perangkat lokal untuk memastikan resolusi nama domain menggunakan catatan DNS yang terbaru.

  • Pada Linux (Ubuntu/Debian):
systemd-resolve --flush-caches
  • Pada macOS:
killall -HUP mDNSResponder
  • Pada WIndows:
ipconfig /flushdns

b. Tunggu Propagasi DNS

Perubahan DNS biasanya memerlukan waktu hingga 24-48 jam untuk sepenuhnya diterapkan di seluruh server DNS global. Jika Anda tidak dapat membersihkan cache DNS secara manual, tunggu hingga waktu TTL (Time to Live) kedaluwarsa, sehingga penyelesai DNS memperbarui catatan secara otomatis.

Anda dapat menggunakan alat seperti whatsmydns.net untuk memeriksa status propagasi DNS di seluruh dunia.

c. Pastikan konfigurasi Nginx sesuai dengan host baru. Jika nama domain diarahkan ke host baru, periksa apakah konfigurasi Nginx sesuai dengan nama domain dan alamat IP host baru.

  • Periksa file konfigurasi Nginx:
nano /etc/nginx/sites-available/example.com
  • Pastikan blok server_name telah sesuai:
server {    server_name example.com www.example.com;    root /var/www/example;    index index.html index.php;}

7. Penutup#

Kesalahan 403 Forbidden pada NGINX dapat disebabkan oleh berbagai faktor, seperti pengaturan izin file yang tidak sesuai, kesalahan dalam konfigurasi directives, kontrol akses yang terlalu ketat, atau masalah cache DNS. Untuk menyelesaikan error ini, sangat penting untuk melakukan diagnosis secara sistematis dan menyeluruh.

Setelah melakukan perubahan pada konfigurasi Nginx atau sistem terkait, pastikan untuk selalu me-restart service-nya agar semua pembaruan dapat diterapkan.

Setelah itu, coba akses kembali website yang sebelumnya mengalami kesalahan 403 Forbidden untuk memastikan bahwa masalah telah terselesaikan. Jika website dapat diakses dengan normal, berarti langkah-langkah perbaikan telah berhasil.

Gambar 17: Akses Website telah Berhasil

Dengan penyelesaian yang sistematis, Anda tidak hanya akan memulihkan akses website, tetapi juga memastikan server tetap berjalan dengan optimal dan aman untuk masa mendatang. Semoga panduan ini bermanfaat dan membantu Anda menyelesaikan permasalahan 403 Forbidden pada NGINX.

Butuh bantuan lebih lanjut?

Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.