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!
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!
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
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:
ls -l <nama_direktori>
Tips: Kolom pertama dalam output (
drwxr-xr-xatau-rw-r--r--) menunjukkan izin file atau direktori. Pastikan izin ini sesuai dengan kebutuhan.
File: 640 (default 644)
Direktori: 750 (default 755)
chmod 644 <file_website>
chmod 755 <direktori_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 {} \;
Catatan: Sesuaikan izin dengan kebutuhan aplikasi Anda untuk mencegah potensi risiko keamanan.
Perbaiki kepemilikan file dan direktori. Nginx memerlukan kepemilikan file dan direktori oleh pengguna dan grup yang sesuai.
www-datanginxchown -R www-data:www-data <direktori_website>
sudo -u www-data bash -c "cat <file_website>"
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:
/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/.
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;
}
}
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.
Tahapan penyelesaian kendala:
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.
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
Baca juga: Meningkatkan Keamanan Server dengan Mengubah Default Port SSH
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:
Periksa aturan firewall saat ini. Periksa konfigurasi firewall yang aktif untuk menemukan aturan yang mungkin memblokir alamat IP, port, atau protokol tertentu.
a. IPTables:
iptables -L -n --line-numbers
b. **UFW**:
ufw status verbose
Hapus aturan yang tidak perlu. Setelah menemukan aturan yang memblokir alamat IP atau port tertentu, hapus aturan tersebut agar permintaan dapat diterima.
a. IPTables:
iptables -D INPUT <nomor_rule>
Jika alamat IP yang digunakan diblokir pada aturan nomor 1:
b. **UFW**:
ufw delete deny from <alamat_IP>
Langkah untuk Memeriksa Fail2Ban:
fail2ban-client status
fail2ban-client status <nama_jail>
fail2ban-client unban
Contoh:
Jika alamat IP 192.168.1.101 diblokir dalam jail nginx-http-auth:
fail2ban-client unban 192.168.1.101
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:
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
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;
}
server.
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. Pada Linux (Ubuntu/Debian):
systemd-resolve --flush-caches
b. Pada macOS:
killall -HUP mDNSResponder
c. Pada WIndows:
ipconfig /flushdns
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.
nano /etc/nginx/sites-available/example.com
server_name telah sesuai:server { server_name example.com www.example.com; root /var/www/example; index index.html index.php;}
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.
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.
Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.