nginx-ru Digest, Vol 59, Issue 13

Oleksandr V. Typlyns'kyi wangsamp at gmail.com
Sun Sep 21 09:34:32 UTC 2014


Today Sep 21, 2014 at 09:18 Sergey Kagansky wrote:

> Как я понимаю, geo может быть использован только в контексте http
> В моём случае есть сотни виртуальных хостов у каждого свой список
> разрешённых IP и юзер-агентов.

  И чему это мешает? Более внимательному прочтению документации?
  "Поскольку переменные вычисляются только в момент использования, само по 
  себе наличие даже большого числа объявлений переменных "geo" не влечёт за 
  собой никаких дополнительных расходов на обработку запросов."
  С map аналогично.

> Есть ли решение для такого случая?

  Генератор конфига.
  http://nginx.org/r/perl_set/ru
  http://nginx.org/r/auth_request/ru
  http://wiki.nginx.org/HttpLuaModule#access_by_lua
  
> >>>  Задавать значение переменной через geo(http://nginx.org/r/geo/ru) и
> >>>  потом использовать её в map(http://nginx.org/r/map/ru) по
> >>> $http_user_agent:
> >>>
> >>>  geo $listips {
> >>>    default 1;
> >>>    127.0.0.1 0;
> >>>    192.168.1.0/24 0;
> >>>    ...
> >>>  }
> >>>
> >>>  map $http_user_agent $nottrusted {
> >>>    default $listips;
> >>>    "~Opera Mini" 0;
> >>>    ...
> >>>  }
> >>>
> >>>  location /test {
> >>>    if ($nottrusted) {return 403;}
> >>>    proxy_pass http://127.0.0.1;
> >>>  }

-- 
WNGS-RIPE



Подробная информация о списке рассылки nginx-ru