Ответ 1
В официальном распространении nginx такой функции нет. Beacause может сильно снизить производительность.
Модули сторонних разработчиков http://wiki.nginx.org/3rdPartyModules также не содержат эту функцию.
В настоящее время я делаю это в своем nginx.conf:
allow 1.2.3.4;
deny;
Что я действительно хотел бы сделать, так это:
allow my.domain.name;
deny;
I.e., я хочу, чтобы nginx выполнял поиск записи в файле my.domain.name во время запроса, и если он соответствует IP-адресу, из которого поступает запрос, разрешите его. Однако я не вижу встроенного механизма для этого. У кого-то есть собственный способ сделать это, прежде чем я начну кодировать что-то обычай?
В официальном распространении nginx такой функции нет. Beacause может сильно снизить производительность.
Модули сторонних разработчиков http://wiki.nginx.org/3rdPartyModules также не содержат эту функцию.
ngx_http_rdns_module делает то, что вам нужно: http://wiki.nginx.org/HttpRdnsModule (https://github.com/flant/nginx-http-rdns)
Этот модуль позволяет сделать обратный DNS (rDNS) поиск входящего соединения и обеспечивает простой контроль доступа к входящему имени хоста с помощью правил allow/deny (аналогично директивам разрешения/запрета HttpAccessModule, поддерживаются регулярные выражения). Модуль работает с DNS-сервером, определенным стандартной директивой resolver.
location / {
resolver 127.0.0.1;
rdns_deny badone\.example\.com;
if ($http_user_agent ~* FooAgent) {
rdns on;
}
if ($rdns_hostname ~* (foo\.example\.com)) {
set $myvar foo;
}
#...
}