Jika Anda menggunakan Nginx (baca: engine – X) untuk webserver maupun sebagai reverse proxy server, anda dapat memblokir akses dari suatu negara ke website yg hosted di server tsb. Ada beberapa alasan kenapa visitor dari negara tertentu itu sebaiknya diblokir saja. Misalnya anda punya web olshop yg jualan dengan target customernya ya orang-orang lokal Indonesia saja, tidak menerima order dari negara asing, tidak kirim kemanapun kecuali nusantara. Maka tidak perlu donk visitor dari Uzbekistan, Lithuania, Ekuador, Ghana… dan negara antah berantah manapun.
Maka negara-negara tsb bisa diblokir dengan gampang dan ini tentu akan menghemat bandwidth server, juga bisa mengurangi load atau kinerja server biar ga terlalu berat. Di dalam Nginx, caranya cukup menambahkan konfigurasi ke dalam direktori yg lazimnya berada di /etc/nginx/conf.d
cd /etc/nginx/conf.d/
- Bikin sebuah file dengan ekstensi .conf gunakan nama file yg mudah dijadikan pengingat misalnya: blockcn.conf (misalnya ini mau blokir visitor dari China)
- Isikan daftar range/block ip yg akan diblokir dengan format semacam ini:
deny 223.240.0.0/13; deny 223.248.0.0/14; deny 223.252.128.0/19; deny 223.252.176.0/20; deny 223.252.192.0/19; deny 223.254.0.0/16; deny 223.255.0.0/17; error_page 403 http://example.tld/denied.html;
- Save file tsb
- Test konfigurasi dengan perintah
nginx -t
- Kalo hasilnya OK maka… Selamat! Pengunjung dari negara China akan terblokir dan tidak dapat mengakses website Anda.
- Oh wait, kalo OK maka restart Nginx -nya dulu supaya konfigurasi blokir tsb efektif
systemctl restart nginx
atauservice nginx restart
Tapi ip range dari satu negara kan tentu banyak banget borr ga cuma beberapa baris saja! Ya betul oleh karena itu kita perlu pinjam tools gratis yg disediakan oleh ip2location di sini:
https://www.ip2location.com/free/visitor-blocker
Liat ke bawah.. di bagian Download List.
Nah pilih Country yaitu negara yg hendak diblokir, IP version pilih yg IPv4 dan output formatnya pilih yg Nginx deny. Selanjutnya download list ip dari negara yg sudah dipilih tsb. Anda akan mendapat sebuah file bernama: firewall.txt.gz. Upload ke server nginx Anda.
Sebelum dijadikan konfigurasi untuk melakukan blokir, ada beberapa hal yg harus dijalankan yaitu:
- Ekstrak dahulu file tsb setelah diupload ke server dengan command
gunzip -d firewall.txt.gz
- Hasilnya adalah file firewall.txt yg perlu diedit dengan file editor (saya pakenya vim)
vim firewall.txt
- Hapus: location / {
- Hapus: { (di bagian akhir file)
- Kalo visitornya mau dialihkan misal ke warning page bisa tambahkan di baris paling akhir error_page 403 dan tentukan url-nya (lihat contoh yg sudah ada di atas)
- Rename
mv firewall.txt blockcn.conf
- Jangan lupa taruh file tsb di /etc/nginx/conf.d
Tentu ip suatu negara itu sangat dinamis dan bisa bertambah/berubah dalam kurun tertentu, maka list yg diunduh dari ip2location ini harus secara berkala diunduh ulang untuk mendapatkan list ip yg update. Kalau subscribe $99/tahun bisa tuh dikasih update sama ip2location dan listnya dapat didownload otomatis via curl.
TIPS: kalo ada banyak negara yg diblokir dan jumlah visitornya juga signifikan, rasanya bisa jadi peluang nih meski cuma recehan ya kan… nah kalo demikian untuk error pagenya bikinkan aja sebuah web yg isinya sesuatu yg mudah diviralkan misal berisi foto, meme atau video lucu. Nantinya free traffic yg dialihkan akan mengunjungi web tsb… siapa tau bisa jadi income tambahan hehehehe.