Mengatasi nginx: [emerg] “set_real_ip_from” directive is not allowed here in /etc/nginx/nginx.conf:119

moch akbar fitrianto

Bagikan

Dapat laporan dari mas Hartono soal mendapatkan alamat IP asli pengunjung pada website yang menggunakan CloudFlare, dan web servernya pakai Nginx. Jadi saat ditambahkan konfigurasinya malah muncul pesan error:

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

Inti permasalahannya sederhana, kode set_real_ip_from ini tidak bisa diletakkan pada sembarang tempat di dalam konfigurasi Nginx. Setidaknya sampai saat ini saya cuma tahu ada 2 tempat yang bisa memakainya yakni blok kode http{} pada nginx.conf dan blok server{} pada konfigurasi virtual host. Salah satu saja sudah cukup.

Seharusnya akan seperti ini kodenya:

http {

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  104.16.0.0/12;
set_real_ip_from  108.162.192.0/18;
set_real_ip_from  131.0.72.0/22;
set_real_ip_from  141.101.64.0/18;
set_real_ip_from  162.158.0.0/15;
set_real_ip_from  172.64.0.0/13;
set_real_ip_from  173.245.48.0/20;
set_real_ip_from  188.114.96.0/20;
set_real_ip_from  190.93.240.0/20;
set_real_ip_from  197.234.240.0/22;
set_real_ip_from  198.41.128.0/17;
set_real_ip_from  199.27.128.0/21;
#set_real_ip_from  2400:cb00::/32;
#set_real_ip_from  2405:8100::/32;
#set_real_ip_from  2405:b500::/32;
#set_real_ip_from  2606:4700::/32;
#set_real_ip_from  2803:f800::/32;
real_ip_header CF-Connecting-IP;

}

Ini saya contohkan hanya untuk CloudFlare. Dan Nginx tahu apa alamat IP asli si pengunjung dengan memfilter trafik dari alamat IP milik CloudFlare diatas dan membaca header HTTP/S yang bernama CF-Connecting-IP. Sedangkan kalau pakai Reverse Proxy / Load Balancer lain ya bisa berbeda lagi spesifiknya.

Setelah itu coba direload Nginxnya:

service nginx reload

Bagikan

Also Read