Proteksi direktori dan file dengan nginx

Tutorial dibawah ini hanya dapat digunakan pada pengguna VDS keatas!

Tutorial berikut ini dapat dijalankan pada VDS keatas yang menggunakan nginx, baik secara native (keseluruhan) yang ingin melindungi direktori ataupun file dari akses yang tidak diinginkan dengan menggunakan modul http_auth_basic_module. Proteksi yang dibicarakan pada tutorial ini setara dengan sistem htpasswd pada Apache jika anda tidak familiar dengan http_auth_basic_module.

Tutorial ini ditulis berdasarkan sistem Debian. Jika anda menggunakan sistem lain seperti CentOS, Ubuntu, dsb, maka kemungkinan besar letak file yang ditulis berbeda.

Proteksi Direktori

Untuk melindungi per direktori, buka /etc/nginx/sites-enabled/default

Pada contoh dibawah, anggap anda ingin melindungi direktori /download yang artinya anda akan melindungi alamat nama.domains/download

server {
....
location /download {
auth_basic "Dilarang masuk!";
auth_basic_user_file /alamat/dari/file/htpasswd;
# contoh: /usr/share/nginx/htpasswd
index index.php index.html;
}

Untuk menambah segi keamanan, disarankan agar file htpasswd berada di luar lokasi tempat website berada. Contoh, jika website anda berada di /usr/share/nginx/html maka letakkan file htpasswd diluarnya agar tidak bisa diintip oleh pengunjung website anda.

Alternatif lain anda dapat menyembunyikan file tersebut dengan menjadikannya hidden (.htpasswd) Namun harap diingat, jika anda menggunakan cara alternatif maka anda harus memberi tahu nginx agar memblokir akses file .ht dengan cara menghapus komentar dari blok berikut:

location ~ /\.ht {
deny all;
}

Untuk membuat file htpasswd sendiri anda dapat menggunakannya htpasswd generator ataupun menggunakan situs htpasswd generator yang banyak tersedia di luar sana.

Proteksi File

Untuk proteksi file, bentuknya hampir sama. Hanya location nya sajalah yang berbeda

location ~* /blablabla.php {
auth_basic "Dilarang masuk!";
auth_basic_user_file /alamat/dari/file/htpasswd;
KONFIGURASI_PHP_ANDA
}

KONFIGURASI_PHP_ANDA disini diisi dengan bagaimana cara anda mengeset nginx memanggil file php. Anda dapat mengecek bagaimana caranya dengan melihat kolom location ~ \.php$ milik anda.

Untuk blok location ini sendiri terdapat banyak sekali bentuk konfigurasi. Anda dapat mempelajarinya melalui link berikut ini: NGINX HTTP Auth Basic Module dan NGINX HTTP Core Module – Location