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

Ограничение нескольких каталогов одними и теми же диапазонами IP-адресов

Предположим, у меня в файле конфигурации nginx есть следующее:

location ^~ /foo/ {
    allow 1.2.3.4;
    allow 5.6.7.8;
    allow 9.10.11.12;
    …
    allow 99.100.101.102;
    deny all;
    # rest of directives
}

Если я также хочу ограничить доступ к нескольким другим каталогам, возможно ли это сделать, не создавая еще один блок и снова перечисляя IP-адреса? Меня беспокоит внесение изменений при добавлении и удалении IP-адресов в будущем - я бы не хотел, чтобы каждый блок был обновлен.

Еще лучше была бы директива, которая в основном позволяет мне каким-то образом «включать» список IP-адресов в каждый блок.

Как только я набрал слово «включить» в вопросе выше, у меня в голове закружились колеса.

Оказывается, вы можете просто поставить allow и deny директивы во включаемый файл, и они будут работать так, как ожидалось. Лучше всего то, что я могу комбинировать списки IP-адресов, чтобы определенные группы серверов могли получить доступ к одним каталогам, а другие - нет.

У меня это настроено так:

/ и т.д. / nginx / включает / админ-ips

allow 1.2.3.4/32;
allow 1.2.3.5/32;

/ и т.д. / nginx / включает / частные-ips

allow 10.0.0.0/8;
allow 172.16.0.0/12;
allow 192.168.0.0/16;

/ и т.д. / nginx / включает / тестирование-ips

allow 4.5.6.7;
allow 8.9.10.11;

/etc/nginx/conf.d/server.conf

location ^~ /admin/ {
    include includes/admin-ips;
    deny all;
    # rest of directives
}

location ^~ /tools/ {
    include includes/admin-ips;
    include includes/testing-ips;
    include includes/private-ips;
    deny all;
    # rest of directives
}

location ^~ /tests/ {
    include includes/admin-ips;
    include includes/testing-ips;
    deny all;
    # rest of directives
}

Работает как шарм.