Install Modul GeoIP2 untuk Nginx di Server Ubuntu

Rabu, 09 Desember 2020

Install Modul GeoIP2 untuk Nginx di Ubuntu. Dikarenakan ada kebutuhan logging dengan menampilkan lokasi negara, saya akhirnya memutuskan untuk menggunakan GeoIP2 dari Maxmind. Hanya saja Maxmind saat ini tidak menyediakan dukungan untuk Nginx di modul GeoIP2 mereka.

Dan di kasus yang saya alami, server yang akan saya pasang GeoIP2 ini adalah server production dimana memang diusahakan untuk meminimalisir downtime. Nah, karena hal tersebut, saya harus mengcompile modul GeoIP2 tersebut dan memasangnya di Nginx yang sudah berjalan di server production tadi.

Sebelumnya, ada beberapa dependensi yang harus diinstall terlebih dahulu.

sudo add-apt-repository ppa:maxmind/ppa

sudo apt update

sudo apt install gcc libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev libmaxminddb0 libmaxminddb-dev mmdb-bin geoipupdate

Oke selesai. Selanjutnya kita unduh source code Nginx. 

Pertama, kita cek versi Nginx yang terinstall. Bisa gunakan command

nginx -V

Contoh output:

nginx version: nginx/1.18.0

Oke jadi kita akan menggunakan source Nginx versi 1.18.0

wget http://nginx.org/download/nginx-1.18.0.tar.gz

tar xf nginx-1.18.0.tar.gz

wget https://github.com/leev/ngx_http_geoip2_module/archive/master.tar.gz -O ngx_http_geoip2_module.tar.gz

tar xf ngx_http_geoip2_module.tar.gz

Selanjutnya adalah compile module GeoIP2

cd nginx-1.18.0

./configure  --add-dynamic-module=../ngx_http_geoip2_module-master $(nginx -V) --with-compat

make

Selanjutnya kita akan memasang modul GeoIP2 tersebut ke Nginx yang sudah terinstall di sistem. Ya, kita membutuhkan source Nginx diatas hanya untuk keperluan compile.

sudo cp objs/ngx_http_geoip2_module.so /usr/lib/nginx/modules/

echo "load_module modules/ngx_http_geoip2_module.so;" | sudo tee /etc/nginx/modules-available/mod-http-geoip2.conf

sudo ln -s /etc/nginx/modules-available/mod-http-geoip2.conf /etc/nginx/modules-enabled/60-mod-http-geoip2.conf

Update Database GeoIP2

Selanjutnya adalah mendapatkan database GeoIP2. Kalian harus mendaftar di Maxmind untuk mendapatkan AccountID dan juga LicenseKey lalu edit file konfigurasi GeoIP2 di server kalian.

sudo nano /etc/GeoIP.conf 

Jika semuanya sudah beres, jalankan command sudo geoipupdate untuk mengupdate database GeoIP2 kalian. Lokasi databasenya ada di /usr/share/GeoIP/.

Mengaktifkan Modul GeoIP2 di Nginx

Tambahkan baris berikut di block http di /etc/nginx/nginx.conf

geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
    auto_reload 60m;
    $geoip2_metadata_country_build metadata build_epoch;
    $geoip2_data_country_code country iso_code;
    $geoip2_data_country_name country names en;
}

geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
    auto_reload 60m;
    $geoip2_metadata_city_build metadata build_epoch;
    $geoip2_data_city_name city names en;
}

fastcgi_param COUNTRY_CODE $geoip2_data_country_code;
fastcgi_param COUNTRY_NAME $geoip2_data_country_name;
fastcgi_param CITY_NAME    $geoip2_data_city_name;
Oke disini saya ingin menampilkan negara di access.log nya, jadi tinggal tambahkan $geoip2_data_country_name di format lognya. Contoh hasilnya:


Oke mungkin sekian tutorial kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.

Artikel Terkait Nginx ,Web Server