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
diproteksi dengan password

Leave a comment

Your email address will not be published. Required fields are marked *