Вопрос по ngx_http_geo_module и регистру сравнения

Igor Sysoev is at rambler-co.ru
Fri Aug 31 13:54:20 MSD 2007


On Fri, Aug 31, 2007 at 01:47:33PM +0400, Vadim A. Umanski wrote:

> Вы писали 31 августа 2007 г., 13:31:52:
> 
> IS> On Fri, Aug 31, 2007 at 01:24:37PM +0400, Vadim A. Umanski wrote:
> 
> >> IS> On Fri, Aug 31, 2007 at 11:13:34AM +0400, Vadim A. Umanski wrote:
> >> 
> >> >> >> Вопрос.
> >> >> >> 1. Сравнение в if будет case-sensitive ?
> >> >> AV> да
> >> >> >> 2. Если да, то отчего пример конфига маленькими буквами?
> >> >> AV> потому что ниже по 
> >> >> AV> http://sysoev.ru/nginx/docs/http/ngx_http_geo_module.html#example есть
> >> >> AV> В файле conf/geo.conf могут такие строки:
> >> >> AV> 10.2.0.0/16      ru;
> >> >> AV> 192.168.2.0/24   ru;
> >> >> >> 3. Не стоит ли упомянуть в документации, что на регистр символов надо
> >> >> >>    обращать внимание?
> >> >> AV> Насколько я вижу на 
> >> >> AV> http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#if упомянуто
> >> >> AV> проверка переменной с помощью регулярного выражения без учёта регистра символов
> >> >> AV> ? "~*" и с учётом ? "~"
> >> >> 
> >> >> if ($country !~* "ru") {
> >> >>                         return   403;
> >> >> }
> >> >> 
> >> >> Да, такая конструкция благополучно срабатывает. Очень корректно
> >> >> получается, можно писать родную страну как в голову взбредет и не
> >> >> беспокоиться. ;-)
> >> 
> >> IS> Только нужно учитывать, что регулярные выражение медленее, чем простое
> >> IS> сранение строк. В данном же случае для проверки страны лучше использовать
> >> IS> такое:
> >> 
> >> IS>      default          1;
> >> IS>      192.168.1.0/24   0;  # ru
> >> IS>      10.2.0.0/16      0;  # ru
> >> 
> >> 
> >> IS>      if ($abroad) {
> >> IS>          return 403;
> >> IS>      }
> >> 
> >> Тут я что-то недогоняю. Как сюда ложится подключенная мной база
> >> GeoIP, сконвертированная контриб-скриптом? Там табун сеток,
> >> обозначенных как  RU. Мне они нужны. А все остальные - не нужны. Как
> >> это все ложится в 0 и 1 ?
> 
> IS> RU - 0, всё остальное просто выкидывается.
> 
> Т.е. базу надо опять несложным скриптом прогнать, чтоб получить этот
> 0, а остальное выкинуть?

Да.


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





More information about the nginx-ru mailing list