Membatasi akses ke jalur administratif (admin path) pada web server Nginx berdasarkan alamat IP tertentu adalah langkah pengamanan paling dasar dan efektif untuk mencegah serangan brute force, eksploitasi celah keamanan panel, dan akses ilegal dari pihak luar. Pengaturan ini dilakukan langsung di dalam blok konfigurasi server Nginx menggunakan direktif allow dan deny.
Secara default, Nginx akan memproses aturan kontrol akses dari atas ke bawah. Blok kode harus ditempatkan secara tepat di dalam blok location yang mengarah ke direktori admin, seperti /wp-admin/ untuk WordPress atau direktori kustom lainnya.
Konfigurasi Nginx untuk Restriksi IP Admin
Berikut adalah contoh sintaks konfigurasi blok server Nginx untuk membatasi akses ke jalur /admin/ agar hanya bisa diakses oleh IP kantor atau IP lokal tertentu (misal: 192.168.1.100), sementara IP lainnya akan ditolak dengan kode status HTTP 403 Forbidden.
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm;
# Lokasi umum situs
location / {
try_files $uri $uri/ =404;
}
# Restriksi akses untuk jalur admin
location /admin/ {
allow 192.168.1.100; # Ganti dengan IP statis Anda
deny all; # Tolak semua IP lain
try_files $uri $uri/ /admin/index.php?$args;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
}
}
Tabel Matriks Perintah Kontrol Akses Nginx
| Direktif | Fungsi Utama | Contoh Penggunaan |
|---|---|---|
allow |
Mengizinkan akses dari alamat IP atau subnet CIDR tertentu. | allow 203.0.113.50; |
deny |
Menolak akses dari alamat IP atau subnet CIDR tertentu. | deny 198.51.100.0/24; |
deny all |
Menutup akses untuk semua alamat IP yang tidak didefinisikan sebelumnya di atasnya. | deny all; |
Langkah Penerapan dan Pengujian
- Buka file konfigurasi Nginx Anda menggunakan teks editor seperti nano atau vim (biasanya terletak di
/etc/nginx/sites-available/defaultatau direktori domain terkait). - Tambahkan blok
locationdengan aturanallowdandenyseperti contoh di atas. - Simpan file konfigurasi, lalu lakukan uji sintaks untuk memastikan tidak ada kesalahan pengetikan dengan perintah:
sudo nginx -t - Jika hasil pengujian menunjukkan pesan syntax is ok dan test is successful, muat ulang layanan Nginx dengan perintah:
sudo systemctl reload nginx - Uji akses dari peramban dengan menggunakan IP yang diizinkan dan IP yang diblokir untuk memastikan aturan bekerja dengan baik.
Troubleshooting Lapangan
Jika server Nginx Anda berada di belakang reverse proxy, Cloudflare, atau load balancer, aturan pembatasan IP ini mungkin akan membaca IP dari proxy tersebut, bukan IP asli pengunjung. Untuk mengatasinya, pastikan Anda mengaktifkan modul realip dan menggunakan direktori set_real_ip_from agar Nginx membaca header X-Forwarded-For secara akurat.