Traffic spam dari luar negeri terutama China (Tiongkok) dan Vietnam sering menyebabkan masalah; terutama menggunakan server cloud VPS:
- Lonjakan traffic tidak valid
- Membebani server
- Risiko invalid traffic
- Data analytics jadi tidak akurat
Solusi paling efektif adalah memblokir langsung di level server linux (Nginx) menggunakan GeoIP2.
Konten ini membahas setup dari nol sampai auto update database.
Kenapa Block di Nginx Lebih Efektif?
Dibanding CDN seperti Cloudflare, block di Nginx:
✅ Lebih cepat (langsung di server)
✅ Tidak bisa dibypass dengan mudah
✅ Mengurangi beban CPU & RAM
✅ Tidak memproses request ke aplikasi (WordPress/PHP)
STEP 1 — Install GeoIP2 Module
Untuk Ubuntu/Debian:
apt update
apt install nginx libnginx-mod-http-geoip2
Verifikasi module
nginx -V 2>&1 | grep geoip2
Kalau sudah aktif → lanjut
STEP 2 — Download Database GeoIP2
Daftar buat akun untuk dapatkan API-KEY di MaxMind: 👉 https://www.maxmind.com
Download GeoLite2 Country (.mmdb) menggunakan APi-key !
Kode perintah download:
cd /tmp && \
wget -O geoip.tar.gz "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=LICENSE_KEY_KAMU&suffix=tar.gz" && \
tar -xzf geoip.tar.gz && \
mv GeoLite2-Country_*/GeoLite2-Country.mmdb /etc/nginx/geoip/
Cek ketersedian file:
ls -lh /etc/nginx/geoip/GeoLite2-Country.mmdb
⚙️ STEP 3 — Konfigurasi Nginx
Buka:
nano /etc/nginx/nginx.conf
Tambahkan di dalam http {}:
# load ini taruh paling atas (optional jika error!)
load_module modules/ngx_http_geoip2_module.so;
# kode bisa ditaruh bawah sebelum Rate limit & connection limit
geoip2 /etc/nginx/geoip/GeoLite2-Country.mmdb {
auto_reload 5m;
$geoip_country_code country iso_code;
}
# Block negara spam
map $geoip_country_code $blocked_country {
default 0;
CN 1; # China
VN 1; # Vietnam
}
STEP 4 — Terapkan di Website (HTTPS)
Edit config domain:
nano /etc/nginx/sites-available/domainkamu
- HTTP (port 80)
server {
listen 80;
server_name domainkamu.com; return 301 https://$host$request_uri;
}
HTTPS (port 443)
server {
listen 443 ssl http2;
server_name domainkamu.com; ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
# Cek ID negara
add_header X-Country-Code $geoip_country_code;
# BLOCK NEGARA IPGEO2
if ($blocked_country) {
return 403;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
}
🔄 STEP 5 — Reload Nginx
nginx -t
systemctl reload nginx
✅ HASIL
Sekarang:
- China 🇨🇳 → ❌ 403 (blocked)
- Vietnam 🇻🇳 → ❌ 403
- Indonesia 🇮🇩 → ✅ normal
Gunakan VPN Browser ektensi untuk ujicoba langsung traffic negara target!
STEP 6 — Testing
Test langsung traffic lokal :
curl -I https://domainkamu.com
Contoh hasil:
X-Country-Code: ID
🔄 STEP 7 — Auto Update GeoIP2 (WAJIB)
Database GeoIP harus di-update rutin agar tetap akurat.
🔧 Buat script update
nano /usr/local/bin/update-geoip.sh
Isi script:
#!/bin/bash
LICENSE_KEY="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"
TMP_DIR="/tmp/geoip"
DEST="/etc/nginx/geoip"
mkdir -p $TMP_DIR
cd $TMP_DIR || exit
# Download (pakai --location biar ikut redirect)
wget --quiet --show-progress --progress=bar:force:noscroll \
-O geoip.tar.gz \
"https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&license_key=${LICENSE_KEY}&suffix=tar.gz"
# Cek file tidak kosong
if [ ! -s geoip.tar.gz ]; then
echo "Download gagal atau file kosong!"
exit 1
fi
# Extract
tar -xzf geoip.tar.gz
# Cari file mmdb
MMDB_FILE=$(find . -name "GeoLite2-Country.mmdb" | head -n 1)
if [ -z "$MMDB_FILE" ]; then
echo "File mmdb tidak ditemukan!"
exit 1
fi
# Copy ke nginx
cp "$MMDB_FILE" $DEST/
# Cleanup
rm -rf $TMP_DIR
# Reload nginx
systemctl reload nginx
echo "Update GeoIP berhasil"
🔐 Beri permission
chmod +x /usr/local/bin/update-geoip.sh
▶️ Test manual
/usr/local/bin/update-geoip.sh
⏰ Tambahkan cron job
crontab -e
Tambahkan:
0 3 1 * * /usr/local/bin/update-geoip.sh
👉 Update tiap bulan jam 03:00
BEST PRACTICE
✅ Disarankan
- Block hanya negara yang jelas spam
- Monitor log Nginx secara berkala
- Kombinasikan dengan rate limiting
❌ Hindari
- Block terlalu banyak negara (bisa ganggu SEO)
- Block berdasarkan user-agent “bot” secara umum
- Mengandalkan GeoIP saja tanpa monitoring
KESIMPULAN
Dengan setup ini kamu mendapatkan:
✅ Block traffic spam dari China & Vietnam
✅ Server lebih ringan
✅ Data analytics lebih bersih
✅ Risiko invalid traffic AdSense berkurang
✅ Database IP selalu update otomatis
Penutup
Block di level Nginx + GeoIP2 adalah salah satu cara paling efektif untuk:
👉 menjaga kualitas traffic
👉 melindungi monetisasi
👉 meningkatkan performa server