Персональный
сайт
Игоря
Сысоева


 
english
 
sysoev.ru
 
nginx
 поехали!    
 документация    
 поддержка    
 изменения    
 скачать    
 ссылки    
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
обо мне
для писем
для денег
 

Директивы модуля ngx_http_geo_module

 

27.10.2009

Модуль ngx_http_geo_module создаёт переменные, значения которых зависят от IP-адреса клиента.

Содержание

Пример конфигурации
Директивы
geo

Пример конфигурации

    geo  $geo  {
         default          0;
         127.0.0.1/32     2;
         192.168.1.0/24   1;
         10.1.0.0/16      1;
    }

Директивы


syntax: geo [$адрес] $переменная { ... }
default: нет
context: http

Директива geo описывает для указанной переменной зависимость значения от IP-адреса клиента. По умолчанию адрес берётся из переменной $remote_addr, но его также (0.7.27) можно получить из другой переменной, например:

    geo  $arg_remote_addr  $geo {
         ...;
    }
Если значение переменной не представляет из себя правильный IP-адрес, то используется адрес "255.255.255.255".

Адреса задаются в виде CIDR или в виде диапазонов (0.7.23). Кроме того, есть четыре специальных параметра:

  • delete — удаляет описанную сеть (0.7.23).
  • default — значение переменной, если адрес клиента не соответствует ни одному заданному адресу. При использовании CIDR вместо default можно также написать 0.0.0.0/0.
  • include — включает файл с адресами и значениями. Включений может быть несколько.
  • proxy — задаёт адреса проски-серверов (0.8.7, 0.7.63), при запросе с которых будет использоваться адрес в переданной в строке заголовка запроса "X-Forwarded-For". В отличие от обычных адресов, адреса прокси-серверов проверяются последовательно.
  • ranges — указывает, что адреса задаются в виде диапазонов (0.7.23). Эта директива должны быть первой. Для ускорения загрузки гео-базы нужно располагать адреса в порядке возрастания.

Пример описания:

    geo  $country  {
         default          ZZ;
         include          conf/geo.conf;
         delete           127.0.0.0/16;
         proxy            192.168.100.0/24;

         127.0.0.0/24     US;
         127.0.0.1/32     RU;
         10.1.0.0/16      RU;
         192.168.1.0/24   UK;
    }

В файле conf/geo.conf могут быть такие строки:

10.2.0.0/16      RU;
192.168.2.0/24   RU;

В качестве значения выбирается максимальное совпадение, например, для адреса 127.0.0.1 будет выбрано значение "RU", а не "US".

Пример описания диапазонов:

    geo  $country  {
         ranges;
         default                    ZZ;
         127.0.0.0-127.0.0.0        US;
         127.0.0.1-127.0.0.1        RU;
         127.0.0.1-127.0.0.255      US;
         10.1.0.0-10.1.255.255      RU;
         192.168.1.0-192.168.1.255  UK;
    }


(C) Игорь Сысоев
http://sysoev.ru