Menambahkan dukungan CloudFlare di Nginx

By | December 1, 2020

Kalau anda menggunakan CloudFlare sebagai CDN maka selain anda mendapatkan peningkatan kecepatan akses website juga akan relatif lebih aman dari serangan spammer dan bot juga DDoS minimal. Sistem CloudFlare adalah berposisi sebagai Reverse Proxy di depan website anda, jadi seluruh request yang masuk akan melewati jaringan server CloudFlare baru diteruskan ke server hosting anda.

Masalahnya kalau anda asal memasang dan mengaktifkan CloudFlare di website anda dan server Nginx anda belum disetting untuk mendukungnya, maka seluruh alamat IP pengunjung yang masuk akan menggunakan milik CloudFlare. Ini jelas akan merusak hasil software statistik dan analisa yang dipasangkan. Paling sederhana kita akan kesulitan membedakan pengunjung karena semuanya melewati CloudFlare.

Sebenarnya CloudFlare dalam setiap aksesnya ke server anda akan menyisipkan header berisikan informasi alamat IP sebenarnya dari si pengunjung (CF-Connecting-IP atau X-Forwarded-For) dan ini bisa kita manfaatkan di Nginx untuk mengubahnya menjadi IP address yang asli. Caranya mudah kok. πŸ™‚ Catatan sebelumnya disini kita akan memanfaatkan modul Nginx bernama ngx_http_realip_module, kalau tidak dikompilasikan (dengan parameter –with-http_realip_module) saat anda menginstall Nginx maka jelas tidak bisa dipakai.

Kembali ke fokus cerita. Silahkan akses file konfigurasi Nginx di /usr/local/nginx/conf/nginx.conf, silahkan dibuka menggunakan teks editor favorit anda. Disini saya menggunakan nano:

nano /usr/local/nginx/conf/nginx.conf

Kemudian cari bagian http. Nah… berdasarkan daftar alamat IP CloudFlare silahkan isikan potongan kode berikut ke dalam blok yang saya referensikan diatas:

#CloudFlare IPv4
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
#CloudFlare IPv6 (Opsional)
#set_real_ip_from 2400:cb00::/32
#set_real_ip_from 2606:4700::/32
#set_real_ip_from 2803:f800::/32
#set_real_ip_from 2405:b500::/32
#set_real_ip_from 2405:8100::/32
real_ip_header CF-Connecting-IP;

Kenapa untuk alamat IPv6 saya jadikan komentar? Karena belum tentu NginX yang anda pakai mampu menggunakannya (tidak dikompilasi dengan parameter --with-ipv6) dan nanti bisa error saat pengecekan konfigurasinya. Tapi kalau sudah mendukung maka anda tinggal menghapus komentarnya (#) saja.

Setting diatas akan bersifat global dan berlaku untuk seluruh domain yang dimasukkan kedalam nginx. Jika anda hanya ingin mengaktifkan dukungan IP address untuk satu situs saja maka edit konfigurasi websitenya yang berlokasi didalam direktori /usr/local/nginx/conf/conf.d/. Contohnya dengan perintah nano juga:

nano /usr/local/nginx/conf/conf.d/servernesia.com.conf

Dan geser ke dalam blok server juga isikan alamat IP diatas.

Kalau sudah silahkan restart nginx agar konfigurasi baru diatas akan divalidasi dan diaktifkan kalau tidak bermasalah:

service nginx restart

Selesai! πŸ˜€


Sumber https://servernesia.com