Ubuntu 16.04 / Apache / Cara Memperbaiki Akses ke Folder javascript
Jika muncul 403 Forbidden saat mengakses /javascript/ di Apache pada Ubuntu, periksa apakah alias Apache yang dibuat oleh paket javascript-common bertentangan dengan path situs. Namun, kesalahan 403 juga bisa terjadi karena izin atau pengaturan daftar direktori, jadi Anda harus memeriksa respons file yang sebenarnya dan pengaturan server bersama sebelum mengambil tindakan.
Hal-hal yang Harus Diperiksa Terlebih Dahulu
Artikel ini didasarkan pada lingkungan yang menggunakan Apache 2.4 di Ubuntu. Artikel asli membahas Ubuntu 16.04 LTS, yang merupakan versi lama yang dukungan standarnya dan dukungan umum Ubuntu Pro telah berakhir. Periksa kondisi untuk dukungan warisan tambahan dan rencanakan untuk bermigrasi ke versi yang didukung. Jadwal dukungan dapat dicek di Jadwal Pemeliharaan Keamanan Ubuntu.
Masalah melihat 403 saat membuka hanya alamat folder /javascript/ di browser dan tidak dapat memuat file JavaScript di dalamnya adalah masalah yang berbeda. Jika tidak ada file index default di direktori dan daftar direktori dimatikan, alamat folder mungkin mengembalikan 403, tetapi file individu masih bisa dilayani secara normal.
Periksa URL dan kode status dari file yang sebenarnya gagal di tab Jaringan (Network) pada alat pengembang browser. Misalnya, periksa apakah /javascript/app.js yang direferensikan oleh situs mengembalikan 200, 403, atau 404, dan juga periksa isi responsnya. Bahkan jika menunjukkan 200, konten selain file JavaScript yang dimaksud mungkin dikembalikan.
Apa itu konflik alias?
Di beberapa lingkungan Ubuntu dan Debian, konfigurasi javascript-common yang aktif mungkin mencakup alias seperti berikut. Ketika konfigurasi ini diterapkan, jalur URL /javascript dapat menunjuk ke direktori lain selain yang berada di bawah root dokumen situs.
Alias /javascript /usr/share/javascript/
Misalnya, jika Apache mencari /javascript/app.js yang diminta di bawah /usr/share/javascript/, file-file di folder situs asli mungkin tidak disajikan. Jika file tujuan tidak ada, mungkin muncul 404, dan jika akses ke tujuan ditolak atau daftar direktori tidak diizinkan, mungkin muncul 403. Jangan menyimpulkan adanya konflik alias hanya berdasarkan kode status.
Alias ini terkait dengan permintaan di mana segmen path pertama dari URL adalah /javascript. Tidak semua folder javascript di bawah segmen lain, seperti /assets/javascript/app.js, secara otomatis cocok dengan alias tersebut. Pemetaan dan prioritas sebenarnya dapat bervariasi tergantung pada host virtual, alias lain, pengalihan, dan aturan penulisan ulang (rewrite rules). Anda dapat memeriksa kecocokan path dan urutan pemrosesan dalam dokumentasi Apache Alias.
Periksa pengaturan aktif dan log kesalahan
Sambungkan ke server untuk memverifikasi versi Apache dan host virtual. Pencarian berikut menemukan string yang relevan di direktori konfigurasi, dan pengaturan yang tidak digunakan juga dapat muncul dalam hasil.
apache2 -v
sudo apache2ctl -S
sudo grep -R -n -i javascript /etc/apache2
Jika /etc/apache2/conf-available/javascript-common.conf muncul dalam hasil, periksa isinya dan pastikan apakah itu benar-benar diaktifkan dan terhubung ke /etc/apache2/conf-enabled/. Juga, tinjau pengaturan khusus host virtual dan aturan URL lainnya. Jika file hilang atau alias dinonaktifkan, jangan menganggap pengaturan ini sebagai penyebab.
ls -l /etc/apache2/conf-enabled/javascript-common.conf
sudo cat /etc/apache2/conf-available/javascript-common.conf
Jika Anda mendapatkan pesan bahwa file atau tautan simbolis tidak ada, maka instalasi atau status aktifnya berbeda. Periksa log kesalahan Apache pada saat permintaan untuk melihat jalur aktual dan kesalahan yang ditemukan. Dalam konfigurasi default Ubuntu, /var/log/apache2/error.log mungkin tersedia, tetapi jalur log bisa berbeda untuk setiap host virtual.
sudo tail -n 50 /var/log/apache2/error.log
Pilih Metode Resolusi
Jika memungkinkan untuk mengubah jalur file di situs, gunakan jalur seperti /assets/js/ yang tidak tumpang tindih dengan alias, dan juga ubah alamat HTML script serta pengaturan build. Jika ada halaman, cache, atau tautan eksternal yang menggunakan alamat yang ada, periksa dampak dari perubahan tersebut dan minta file yang sebenarnya lagi setelah deployment. Hanya mengganti nama folder sementara referensi tetap sama akan mengakibatkan halaman yang ada tidak dapat menemukan file.
Jika Anda perlu mempertahankan alamat /javascript yang ada, administrator server dapat meninjau dependensi dari semua host virtual dan paket sebelum mengubah atau menonaktifkan alias. Menonaktifkan pengaturan javascript-common juga dapat mengubah alamat yang digunakan oleh situs atau paket lain, jadi pertama-tama selidiki dampaknya dan siapkan langkah pemulihan. Mengedit langsung file konfigurasi paket dapat membuat manajemen menjadi lebih rumit saat pembaruan paket.
Berikut adalah opsi ketika Anda telah memastikan bahwa pengaturan diaktifkan dan tidak digunakan oleh layanan lain. Perintah ini dapat memengaruhi seluruh konfigurasi Apache di server. Jika pemeriksaan sintaks gagal setelah eksekusi, jangan memuat ulang; selesaikan penyebabnya atau aktifkan kembali konfigurasi terlebih dahulu.
sudo a2disconf javascript-common
sudo apache2ctl configtest
Muat ulang konfigurasi hanya jika pemeriksaan sintaks mengonfirmasi Syntax OK. Nama layanan dapat bervariasi tergantung pada lingkungan.
sudo systemctl reload apache2
Untuk mengembalikan, aktifkan kembali pengaturan dengan perintah berikut, dan muat ulang hanya ketika pemeriksaan sintaks berhasil.
sudo a2enconf javascript-common
sudo apache2ctl configtest && sudo systemctl reload apache2
Periksa setelah perubahan dan penyebab lainnya
Minta URL file yang tepat yang gagal sebelum perubahan lagi, dan periksa kode status serta konten file. Hapus cache browser Anda atau atur alat pengembang Anda agar tidak menggunakan cache, lalu periksa permintaan jaringan dan kesalahan konsol di halaman. Juga, periksa situs atau paket lain yang menggunakan jalur /javascript yang ada.
Jika alias bukan penyebabnya atau 403 tetap muncul setelah perubahan, periksa aturan akses Directory·Location Apache, izin membaca file dan akses direktori induk, pengaturan tautan simbolik, serta file indeks default dan kebijakan daftar direktori. Jangan sembarangan mengizinkan semua akses atau mengaktifkan daftar direktori untuk menghilangkan kesalahan, karena hal ini dapat mengekspos file yang tidak ingin Anda publikasikan; sebaliknya, pertama-tama verifikasi file dan kebijakan yang benar-benar diperlukan.




