Kamis, 09 Agustus 2012

Cara Menambah HTTP Authentication Pada WP Login Menggunakan Nginx

Iseng aja lagi di ajarin ame temen ngoprek Wordpress (WP) di Nginx, pengen ditambahin HTTP Authentication biar orang gak asal "nyelonong" ke halaman loginnya.

ini ane share ilmunya, semoga bermanfaat :)

Note:
>> Nama domain : domainkamu.com

>> WP directory : /var/www/domainkamu.com/public_html/

>> URL/Directory yang mau di protect:
- url: domainkamu.com/wp-admin/* --> directory: /var/www/domainkamu.com/public_html/wp-admin/*
- url: domainkamu.com/wp-login.php* --> file: /var/www/domainkamu.com/public_html/wp-login.php
===> Maksudnya tanda bintang (*) adalah sebagai wildcard aja..

>> Tanda pagar (#) : Perintah yang diketikkan

dan langkah yg selanjutnya:

1. Install htpasswd utility dari Apache. Lho ?
Tenang, menginstall paket ini gak mengambil full dependency dari server Apache. Cuma dipake buat generate password aja koq.

# sudo apt-get install apache2-utils

2. Kemudian kita buat folder aja dulu, biar lebih rapi strukturnya.

# sudo mkdir ~/.terserah_nama_foldernya

Folder .terserah_nama_foldernya (emang terserah kamu aja sih mau kasih apa nama foldernya, itu hanya contoh :D ), fungsinya untuk menyimpan file ".terserah_nama_filenya", yang nantinya akan kita generate untuk membuat password yang terenkripsi.
Di sini penamaan file dan folder kita gunakan tanda titik (.) di awal, you know laahh.. "hidden files".



3.  Sekarang kita generate password pake htpasswd utility dari Apache yang udah kita install tadi. Di sini untuk pembuatan username saya pake "terserah_nama_usernya".
Lagi-lagi, emang terserah kamu aja namanya, fleksibel aja kok.
Kalau untuk "nama_direktori_user_kamu" ya tergantung username kamu yang dipakai di linux itu sendiri.

# sudo htpasswd -c /home/nama_direktori_user_kamu/.terserah_nama_foldernya/.terserah_nama_filenya terserah_nama_usernya

New password: <-- masukkan password untuk username kamu
Re-type new password: <-- masukkan kembali password untuk username kamu
Adding password for user terserah_nama_usernya

===> Lihat baik-baik, bahwa sekarang sudah ada folder ".terserah_nama_foldernya" dan berisi file ".terserah_nama_filenya".

Cek aja:
# ls -la .terserah_nama_foldernya


4. Selanjutnya kita akan setting hak milik dan akses folder dan file tersebut, agar bisa diakses oleh group www-data, dimana merupakan web server Nginx itu sendiri.

# sudo chown -R root:www-data /home/nama_direktori_user_kamu/.terserah_nama_foldernya

# sudo chmod -R 650 /home/nama_direktori_user_kamu/.terserah_nama_foldernya


5. Oke.. sekarang kita buka konfigurasi Nginx dari website kita itu.

# sudo nano /etc/nginx/sites-available/domainkamu.com

Nahh, tambahkan kira-kira di antara bagian berikut ini (yg cetak tebal).

server {
listen   80;
server_name www.domainkamu.com;     
root /var/www/domainkamu.com/public_html/;     
index index.php index.html;

[.....]

# Perlindungan aman url halaman login       
location ~* ^/wp-login.php$ {               
auth_basic            "Restricted";               
auth_basic_user_file /home/nama_direktori_user_kamu/.terserah_nama_foldernya/.terserah_nama_filenya; 
fastcgi_pass 127.0.0.1:9000;               
fastcgi_index index.php;               
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;               
include fastcgi_params;       
}

# Perlindungan aman folder wp-admin, termasuk halaman login       
location ^/wp-admin/(.*)\..*$ {               
auth_basic            "Restricted";               
auth_basic_user_file /home/nama_direktori_user_kamu/.terserah_nama_foldernya/.terserah_nama_filenya; 
fastcgi_pass 127.0.0.1:9000;               
fastcgi_index index.php;               
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;               
include fastcgi_params;       
}

[.....]

}

===> Lihat baik-baik di baris ini:
fastcgi_pass 127.0.0.1:9000;

===> Sekedar catatan aja, di server saya PHP-FPM listening pake UNIX socket (biar gak overhead di TCP), jadinya kalau settingan PHP-FPM saya sama dengan kamu, maka di baris tersebut diganti menjadi seperti ini:
fastcgi_pass unix:/var/run/php5-fpm.sock;

Silahkan disesuaikan saja.. :-)


6. Finally, silahkan reload Nginx.

# sudo /etc/init.d/nginx reload


Yaaa... selesai.
Sekarang buka url halaman login wp kamu, dalam contoh ini:
domainkamu.com/wp-admin atau domainkamu.com/wp-login.php

Seharusnya sekarang kamu sudah diminta untuk mengisikan username dan passwordnya. ;-)

- Username dalam contoh ini adalah: terserah_nama_usernya
- Passwordnya?? jangan bilang lupa. Itu lho, yang tadi kamu ketik di langkah nomor 3 tadi.

sekian dan semoga bermanfaat :)

0 komentar:

Posting Komentar