Рейтинг:0

NginX: как запретить IP на уровне http, но разрешить все на некоторых уровнях сервера?

флаг in

У меня есть 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{}?

Paul avatar
флаг cn
Что произойдет, если вы добавите блок «местоположение» с регулярным выражением или «=» к первому блоку «сервер»?
djdomi avatar
флаг za
Блок сервера eqch является отдельным элементом, следовательно, нет

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.