У меня есть Nginx со многими определенными «сервисами» (веб-сайтами). Я хотел бы запретить доступ ко всем из них для множества IP-адресов (в основном международных), но в то же время я хочу «разрешить» неограниченный доступ к некоторым общедоступным веб-сайтам. Можно ли это сделать с помощью бесплатного Nginx для Windows?
Вот структура моего конфигурационного файла:
http {
# общие операторы здесь;
сервер {
имя_сервера publicsite.web;
# некоторые настройки;
позволять все;
}
запретить 1.0.0.0/8;
запретить 2.0.0.0/8;
# все, что ниже, должно быть запрещено для перечисленных IP-адресов
сервер {
имя_сервера частный сайт1.домен.веб;
# некоторые настройки;
}
сервер {
имя_сервера privatesite99.web;
# некоторые настройки;
}
}
Я пробовал такую конфигурацию, но «publicsite.web» получает отказ для IP-адресов, перечисленных ниже его блока server {}, я думаю, потому что они находятся на уровне http, хотя они перечислены ниже.
Я понимаю, что самым простым вариантом было бы перечислить все «запрещенные» IP-адреса в отдельном файле (который, кстати, уже есть) и включить их в каждый блок server{}, который должен учитывать отказ. Учитывая, что может быть до сотни таких блоков server{} и более сотни блоков запрещенных IP-подсетей, я боюсь, что конфигурация может стать слишком сложной и громоздкой, что повлияет на производительность сервера.
Есть ли лучший вариант, чем включать один и тот же список запрещенных IP-адресов в каждый блок server{}?