Задать вопрос

Как починить ошибку при сборке Nginx с GeoIP модулем?

Приветствую всех. Нужна ваша помощь.

Ситуация:
Пытаюсь настроить сервер, чтобы сайт был доступен только для РФ-юзеров, т.е. чтобы 403 forbidden открывался для всех остальных стран.

Нашел более-менее понятный мануал и сделал следующее:
1. Проверка nginx -V показала, что --with-http_geoip_module есть и уже включен
2. Скачал sudo wget geolite.maxmind.com/download/geoip/database/GeoLit...
sudo wget geolite.maxmind.com/download/geoip/database/GeoLit...
3. Распаковал в /etc/nginx/geoip/ GeoLite2-Country.mmdb и GeoLite2-City.mmdb
4. В nginx.conf в http добавил:
geoip_country /etc/nginx/geoip/GeoLite2-Country.mmdb;
geoip_city /etc/nginx/geoip/GeoLite2-City.mmdb;

map $geoip_country_code $bad_country {
    default 1;
    include /etc/nginx/geoip/good_countries;
}


5. В fastcgi_params добавил:
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;


6. Перезапустил sudo service nginx restart, сервер ответил:
fail

7. Протестировал настройки nginx -t, сервер ответил:
nginx: [emerg] invalid GeoIP City database "/etc/nginx/geoip/GeoLite2-City.mmdb" type:1 in /etc/nginx/nginx.conf:94
nginx: configuration file /etc/nginx/nginx.conf test failed


8. Ответ ссылается именно на строку:
geoip_city /etc/nginx/geoip/GeoLite2-City.mmdb;
дальше пока не стал продвигаться.

9. Понимаю, что что-то неладное с указанной БД, но в инете никаких подобных разобранных ситуаций не нашел, так же пробовал установить БД в формате csv - и в этом случае nginx ругался опять на БД городов ( GeoLite2-City-Locations-ru.csv )

Вопрос: если кто сталкивался с подобной ситуацией - подскажите, где и что неправильно сделано. Спасибо.
  • Вопрос задан
  • 681 просмотр
Подписаться 3 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 1
kotomyava
@kotomyava
Системный администратор
ngx_http_geoip_module does not support GeoIP2

Нужно данные в более старом формате.

Для решения вашей задачи, City вам вообще не нужна. А country можно поставить из репозитория системы в нужном формате.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы