Lindungi situs dengan password pada Nginx

Pada web server berbasis Apache kita dapat dengan mudah membatasi akses ke URL atau lokasi tertentu dengan sistem user dan password. Sebenarnya di Nginx pun bisa, tapi ada beberapa langkah dulu untuk mengintegrasikannya.

Jenis pengamanan seperti ini disebut HTTP Basic Authentication, dan ini merupakan fitur dari Apache sebenarnya, tapi bisa diadaptasikan ke Nginx. Tidak perlu menginstall Apache secara penuh, cuma alatnya saja sudah cukup:

  • CentOS:
    yum install httpd-tools
  • Debian/Ubuntu
    apt-get install apache2-utils

Kemudian kita buat file passwordnya dengan username nama_saya:

htpasswd -c /etc/nginx/.htpasswd nama_saya
Adding password for nama_saya.
New password:
Re-type new password:

Selanjutnya tambahkan pada kode konfigurasi virtual host Nginx untuk websitenya, tepatnya untuk lokasi yang ingin diproteksi dengan login:

location /wp-login.php  {
        auth_basic            "WordPress - Nginx Basic Auth";
        auth_basic_user_file  "/etc/nginx/.htpasswd";
    }

Saya misalkan untuk halaman login WordPress.

Setelah itu restart Nginx:

service nginx reload

Dan nanti saat anda membuka link yang dilindungi akan muncul jendela popup meminta nama user dan kata sandinya untuk melanjutkan. Ini lebih hemat resource karena diproses web server dibaningkan oleh PHP-FPM, juga keamanannya ganda.

2 pemikiran pada “Lindungi situs dengan password pada Nginx

  1. permisi gan saya masih bingung 😀
    saya install wordpress pake easyengine
    nah saya ingin lindungi wp-admin, kira2 caranya bagaimana apakah sama dg diatas?
    saya udah jalankan: apt-get install apache2-utils. kemudian step selanjutnya gimana..

    lokasi buat file .htpasswd nya dimana ya?
    apakah disini : /var/www/nama_domain.com/htdocs/

    terus lokasi buat nambahin kode dibawah ini dimana ya :

    location /wp-login.php  {
            auth_basic            "WordPress - Nginx Basic Auth";
            auth_basic_user_file  "/etc/nginx/.htpasswd";
        }

    thx

Tinggalkan komentar