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

By | May 12, 2019

Dapat report dari mas Hartono soal memperoleh domisili IP asli pengunjung di laman yang menggunakan CloudFlare, dan web servernya gunakan Nginx. Jadi dikala 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 tak dapat diletakkan di sembarang tempat di pada konfigurasi Nginx. Setidaknya hingga dikala ini saya cuma tahu ada 2 lokasi yang dapat memakainya yakni blok kode http{} di nginx.conf dan blok server{} di konfigurasi virtual host. Diantara saja telah lumayan.

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 bagi CloudFlare. Dan Nginx tahu apa domisili IP asli si pengunjung dengan memfilter trafik dari domisili IP milik CloudFlare diatas dan membaca header HTTP/S yang bernama CF-Connecting-IP. Sedangkan kalau gunakan Reverse Proxy / Load Balancer lain ya dapat berbeda lagi spesifiknya.

Setelah itu coba direload Nginxnya:

service nginx reload


Sumber https://servernesia.com