Як встановити GEOIP на NGINX та PHP (FPM)

Перевіримо, чи NGINX має вбудований модуль –with-http_geoip_module:

nginx -V

Якщо має, продовжуємо:

mkdir /etc/nginx/geoip

cd /etc/nginx/geoip

Завантажте і помістіть в папку /etc/nginx/geoip файли GeoLiteCity.dat та GeoIP.dat Їх можна завантажити тут: https://mirrors-cdn.liferay.com/geolite.maxmind.com/download/geoip/database/

Відредагуйте файл /etc/nginx/nginx.conf та додайте в секцію http { … } наступні рядки:

geoip_country /etc/nginx/geoip/GeoIP.dat; # the country IP database
geoip_city /etc/nginx/geoip/GeoLiteCity.dat; # the city IP database

Відредагуйте файл /etc/nginx/fastcgi.conf  та додайте наступні рядки:

fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;

Перезапустіть NGINX та PHP:

service nginx restart

service php7.3-fpm restart

Ваша версія PHP може відрізнятися.

Тепер ви можете отримати код країни у вашому PHP скрипті:

echo $_SERVER[‘GEOIP_COUNTRY_CODE ‘]; // two-letter country code like US, UA..

 

Всі можливі параметри GEOIP:

fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;

fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code;
fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3;
fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name;
fastcgi_param GEOIP_REGION $geoip_region;
fastcgi_param GEOIP_CITY $geoip_city;
fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;
fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
fastcgi_param GEOIP_LATITUDE $geoip_latitude;
fastcgi_param GEOIP_LONGITUDE $geoip_longitude;