Назад | Перейти на главную страницу

Как мне добавить модуль GeoIP в nginx?

Я использую nginx версии 1.8 на сервере centos 6.7, но при использовании команды nginx -V я не вижу там geoip_module. Как я могу добавить его в nginx?

Nginx не имеет «модулей» в смысле apache, его нужно перекомпилировать с помощью модуля, который вам нужен, во время ./configure.

На самом деле это довольно просто - просто выполните следующие действия:

  1. Установите необходимые компоненты для сборки nginx с помощью следующих команд:

    yum group install "Development Tools"

    yum install gcc gd-devel GeoIP-devel

  2. Загрузите последний исходный код nginx из http://nginx.org/en/download.html

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

  3. Распакуйте его и войдите в каталог исходного дерева

    tar xzfv nginx-1.15.7.tar.gz && cd nginx-1.15.7

  4. Получите аргументы конфигурации вашего установленного nginx (запустив nginx -V), добавить --with-http_geoip_module вариант к ним или просто настройте с помощью следующей команды:

    ./configure --with-http_gzip_static_module --with-pcre --with-file-aio --without-http_scgi_module --without-http_uwsgi_module --without-http_fastcgi_module --user=nginx --group=nginx --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_image_filter_module --with-cc-opt="-march=native -mtune=native -O2 -pipe" --with-sha1-asm --with-zlib-asm=pentiumpro --with-md5-asm --with-pcre-jit --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-http_geoip_module

    варианты объяснены здесь

  5. make && make install

  6. Теперь у вас есть поддержка GeoIP в вашем nginx. Для его использования загрузите и распакуйте базы данных из http://dev.maxmind.com/geoip/legacy/geolite/

    curl http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz | gzip -d - > /etc/nginx/GeoIP.dat

    curl http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz | gzip -d - > /etc/nginx/GeoLiteCity.dat

  7. Добавьте их в http раздел вашего файл конфигурации nginx:

    geoip_country /etc/nginx/GeoIP.dat;

    geoip_city /etc/nginx/GeoLiteCity.dat;

  8. И, наконец, определите заголовки, которые будут содержать информацию GeoIP в сервер раздел вашего файл конфигурации nginxе:

    proxy_set_header GEOIP_REGION $geoip_region;

    proxy_set_header GEOIP_REGION_NAME $geoip_region_name;

    proxy_set_header GEOIP_CITY $geoip_city;

    proxy_set_header GEOIP_AREA_CODE $geoip_area_code;

    proxy_set_header GEOIP_LATITUDE $geoip_latitude;

    proxy_set_header GEOIP_LONGITUDE $geoip_longitude;

    proxy_set_header GEOIP_POSTAL_CODE $geoip_postal_code;