Contoh kasus yang banyak adalah banyak aplikasi yang tidak mendukung penggunaan password contoh aplikasi monitoring netdata, atau agar web development anda tidak di index google atau diakses sembarang orang. Daripada me whitelist hanya beberapa IP yang diperbolehkan mengaksesnya ada baiknya menggunakan password atau nama benarnya HTTP Basic Auth.
Konsepnya sederhana, seperti namanya Basic Auth. File password yang dibuat disimpan didalam sebuah file, untuk menambah user tinggal ditambah dibaris baru saja. Contoh saya memiliki situs untuk development nuxtjs, block server nginx yang saya gunakan
server { listen 80; server_name nuxtjs.jaranguda.com; return 301 https://nuxtjs.jaranguda.com$request_uri; } server { listen 443 ssl http2; server_name nuxtjs.jaranguda.com; ssl_certificate /root/.acme.sh/jaranguda.com/fullchain.cer; ssl_certificate_key /root/.acme.sh/jaranguda.com/jaranguda.com.key; location / { proxy_pass http://127.0.0.1:6000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Cara ini tidak terbatas hanya untuk subdomain/domain kita bisa memproteksi folder atau URL misalkan https://nuxtjs.jaranguda.com/ini-admin-lho
. Bisa dikreasikan juga dengan limitasi IP
Tahap 1 : Install Nginx
Ini udah pasti ya, kalo ngga ngapain dicari tutorial caranya ;).
apt install nginx -y
Tahap 2 : Install htpasswd
Fitur basic ini membutuhkan htpasswd
untuk menggenerate password, htpasswd
sendiri berada di package apache2-utils
, install dengan
apt install apache2-utils -y
Buat user untuk mengakses website yang nantinya akan diproteksi
htpasswd -c /etc/nginx/.password superadmin # nanti diminta memasukkan password. New password: Re-type new password: Adding password for user superadmin
keterangan:
superadmin : user yang akan digunakan untuk login.
/etc/nginx/.password : tempat menyimpan user dan password yang dibuat
Bila penasaran dengan passwordnya, bisa dilihat dengan
cat /etc/nginx/.password # output superadmin:$apr1$M26TQztz$0Z/TQG/DMw0h0EeCaORrL0
Tahap 3 : Update Konfigurasi Nginx
Update konfigurasi nginx yang tadi sudah kita miliki menjadi
server { listen 80; server_name nuxtjs.jaranguda.com; return 301 https://nuxtjs.jaranguda.com$request_uri; } server { listen 443 ssl http2; server_name nuxtjs.jaranguda.com; ssl_certificate /root/.acme.sh/jaranguda.com/fullchain.cer; ssl_certificate_key /root/.acme.sh/jaranguda.com/jaranguda.com.key; auth_basic "Rahasia"; auth_basic_user_file /etc/nginx/.password; location / { proxy_pass http://127.0.0.1:6000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Restart nginx
nginx -t # kalo oke restart systemctl restart nginx
Tahap 4 : Tes
Buka situs anda tersebut, nanti akan muncul window untuk memasukkan username dan password