Menambahkan dukungan CloudFlare di Nginx

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! πŸ˜€

15 Comments

  1. nginx: [emerg] "set_real_ip_from" directive is not allowed here in /etc/nginx/nginx.conf:119

    waktu cek nginx -t, keluar seperti itu, kenapa ya mas?

    1. Lokasi penempatan baris kode set_real_ip_from salah mas.

      Mas letakkan dimana dalam nginx.conf? Cuma bisa dipakai dalam blok kode http{} soalnya.

      1. Sudah beres mas, oh ya itu clodflare kan di SG mas, kalau pakai VPS DO sebenarnya ga ngaruh ya mas buat pengunjung Indonesia, soalnya sama sama disana, kecuali kalau blog nya untuk keperluan global baru optimal, apa begitu mas?

      2. Kelebihannya ya koneksi CloudFlare SG ke DO SG anda mas. πŸ˜€ Ya mungkin ada selisih puluhan hingga ratusan ms dibandingkan kalau Dropletnya ada di US/EU. Tapi dari sisi user di Indonesia rasanya minimal.

        Sedangkan kalau global dan pakai CloudFlare ya sudah cukup mas, kan otomatis dilayankan dari server mereka yang terbaik ke pengunjung. πŸ™‚

  2. bang, di servernesia saya cari artikel tentang setup server vps, gak nemu..
    tolong bang, saya lebih nyaman tutorial bahasa indo daripada luar πŸ˜€

  3. mas chandra,
    saya agak bingung dengan pengaturan di cloudflare terutama di bagian ssl,
    ini kasusnya site saya sudah punya dan aktif sslnya dari gogetssl (info rekomendasi ssl murah dari mas chandra), nah itu gimana pengaturannya di cloudflare.

    trims sebelumnya

  4. gan, saya pakai nginx proxy apache di webuzo. setiap saya menggunakan cloudflare, sitemap saya di google search console selalunya error, teteapi ketika saya tidak menggunakan cloudflare, sitemap saya kembali normal. Mungkin agan tau apa permasalahanya kenapa menggunakan cloudflare sitemap saya Error. Brangkali agan tau apa solusinya. Trimakasih

    1. Dulu ada pikiran gitu mas. Tapi karena sedang praktek Let’s Encrypt ya lupa. πŸ˜€

      Juga kalau banyak share kode shell Linux itu kadang malah kena filter keamanan CloudFlare sendiri.

  5. iya versi gratis memang ada plus minusnya, kalau belajar secara logika saya malah ga gunakan cdn itu, karena justru membatasi eksperimen dan lebih baik mengembangkan keamanan dari sisi server itu sendiri hehehe

  6. Punya saya aneh suhu,, pake nginx + cloudflare,, kalau pake vpn sertifikat nya muncul cloudflare, dan kalau pake jaringan lokal muncul nya lets encrypt

    1. Jaringan lokal ini maksudnya Indonesia ya?

      Hmm.. apa alamat IP websitenya dimasukkan manual ke hosts? Karena kalau domainnya diterjemahkan manual IPnya di komputer memang bisa akses langsung tanpa ke lewat CloudFlare.

Tinggalkan Balasan ke Chandra Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *