Anda perlu menambahkan blok location
berikut di dalam blok server
pada file konfigurasi Nginx untuk domain Anda. File ini biasanya terletak di /etc/nginx/sites-available/nama-domain-anda.com
.
Langkah-langkahnya:
Cari Tahu IP Publik Anda: Buka Google dan cari "what is my ip". Google akan menampilkan alamat IP publik Anda saat ini. Anda memerlukan IP ini untuk ditambahkan ke dalam whitelist.
Edit File Konfigurasi Nginx: Buka file konfigurasi Nginx Anda dengan editor teks seperti
nano
atauvim
.Bashsudo nano /etc/nginx/sites-available/nama-domain-anda.com
Tambahkan Kode Berikut: Salin dan tempel kode di bawah ini di dalam blok
server { ... }
, idealnya sebelum bloklocation / { ... }
.
# =====================================================================
# SECURITY: Blokir akses ke wp-login & wp-admin dari semua IP
# kecuali yang diizinkan (whitelist).
# =====================================================================
location ~ ^/(wp-admin|wp-login\.php) {
# GANTI ALAMAT IP DI BAWAH INI DENGAN IP STATIS ANDA
# Untuk mengizinkan lebih dari satu IP, tambahkan baris 'allow' baru.
allow 111.222.333.444; # <-- GANTI DENGAN IP PUBLIK ANDA
# allow 123.123.123.123; # <-- Contoh jika ada IP kedua yang diizinkan
# Tolak semua alamat IP lainnya
deny all;
# Bagian di bawah ini penting agar IP yang diizinkan tetap bisa
# memproses file PHP dengan benar.
# PASTIKAN PATH SOCKET PHP-FPM SESUAI DENGAN SERVER ANDA
#================================================================
include snippets/fastcgi-php.conf;
# Contoh untuk PHP 8.1:
# fastcgi_pass unix:/run/php/php8.1-fpm.sock;
# Contoh untuk PHP 8.2:
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # <-- SESUAIKAN INI!
#================================================================
}
Penjelasan Kode
location ~ ^/(wp-admin|wp-login\.php)
: Aturan ini menargetkan URL yang dimulai dengan/wp-admin
atau sama persis dengan/wp-login.php
.~
: Menandakan pencocokan regular expression (regex) yang case-sensitive.^
: Menandakan awal dari URI.(...)
: Grup.|
: Berfungsi sebagai "ATAU".\.
: Tanda\
(backslash) digunakan untuk escape karakter titik (.
), sehingga Nginx mencocokkan titik secara harfiah, bukan sebagai karakter wildcard.
allow 111.222.333.444;
: Ini adalah whitelist. Nginx akan mengizinkan koneksi dari alamat IP ini. Anda wajib mengganti111.222.333.444
dengan IP publik Anda.deny all;
: Ini adalah aturan utama. Jika sebuah koneksi tidak cocok dengan aturanallow
di atasnya, koneksi tersebut akan ditolak. Nginx akan merespons dengan error403 Forbidden
.include snippets/fastcgi-php.conf;
danfastcgi_pass ...;
: Bagian ini sangat penting. Tanpa ini, bahkan IP yang diizinkan pun tidak akan bisa memuat halaman login karena permintaan tidak diteruskan ke PHP-FPM. Anda harus memastikan pathfastcgi_pass
sesuai dengan konfigurasi PHP-FPM di server Anda.
Langkah Terakhir: Validasi dan Reload Nginx
Setelah menyimpan perubahan pada file konfigurasi, jangan langsung me-restart Nginx. Lakukan validasi terlebih dahulu untuk memastikan tidak ada error sintaks.
Test Konfigurasi Nginx:
Bashsudo nginx -t
Jika outputnya seperti ini, maka konfigurasi Anda sudah benar:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reload Nginx untuk Menerapkan Perubahan:
Bashsudo systemctl reload nginx
Sekarang, coba akses http://nama-domain-anda.com/wp-admin
. Jika Anda mengakses dari IP yang diizinkan, halaman login akan muncul. Jika orang lain mencoba mengakses dari IP yang berbeda, mereka akan mendapatkan halaman error 403 Forbidden
.
Penting: Bagaimana Jika IP Saya Dinamis?
Konfigurasi di atas paling efektif jika Anda memiliki alamat IP statis. Jika IP internet Anda sering berubah (dinamis), Anda akan terkunci dari situs Anda sendiri setiap kali IP Anda berubah.
Jika IP Anda dinamis, ada beberapa solusi:
Update Manual (Kurang Praktis): Setiap kali IP Anda berubah, Anda harus masuk ke server dan mengubah IP di file konfigurasi Nginx.
Gunakan Layanan Dynamic DNS (DDNS):
Gunakan layanan seperti No-IP atau Dynu untuk mendapatkan sebuah hostname yang akan selalu menunjuk ke IP dinamis Anda (misal:
kantorsaya.ddns.net
).Dalam konfigurasi Nginx, ganti
allow 111.222.333.444;
denganallow kantorsaya.ddns.net;
.Catatan: Opsi ini memerlukan konfigurasi resolver di Nginx agar dapat mengenali hostname tersebut.
Gunakan VPN: Gunakan layanan VPN yang memberikan Anda IP statis khusus. Dengan begitu, Anda selalu terhubung melalui IP yang sama.
Tidak ada komentar:
Posting Komentar