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

Директива карты nginx не работает с масками подсети

Нужно ли что-то особенное для сопоставления подсетей в nginx при использовании map? У меня есть конфигурация ниже в http {} блок. IP-адрес клиента - 10.0.3.1. Если я удалю 10.0.3.1 entry он всегда возвращает deny вместо соответствия подсети 10.0.3.0/24. Требуется ли модуль nginx, которого мне не хватает, или что-то в этом роде?

Я основываю эту конфигурацию на некоторых статьях в блогах, но не могу найти официальную документацию, в которой говорится, что эта нотация поддерживается.

map $remote_addr $allowed {
     10.0.3.1 allow;
     10.0.2.0/24 allow;
     10.0.3.0/24 allow;
     default deny;
}

В map директива отображает строки, поэтому можно представить 10.0.3.0/24 как регулярное выражение и продолжайте использовать map директива. Но считали ли вы geo директива, поддерживающая синтаксис IP-адреса?

geo $allowed {
 10.0.3.1 allow;
 10.0.2.0/24 allow;
 10.0.3.0/24 allow;
 default deny;
}

Видеть этот документ для подробностей.