Не могу найти способ построить следующую схему.
Логика не такая уж сложная. Однако я смог написать конфигурацию только с двумя из трех одновременно (базовая аутентификация + белый список аутентификации и т. Д.) Из-за сложной базовой аутентификации и взаимодействий всех / любых совпадений.
Любой пример конфигурации nginx для этого случая?
Прежде всего, хороший вопрос, вы меня туда доставили, мне пришлось искать достойный способ сделать это, но я не мог его найти. (так что я постараюсь дать вам «ковбойский» ответ на вашу проблему, который может сработать).
Я думаю, что это может сработать, так это сопоставить IP-адреса и присвоить им значение в зависимости от того, к какой из трех групп, по вашему мнению, он принадлежит.
map $remote_addr $perm_group {
1.1.1.1.1 2; #ips that don't need basic_auth
1.1.1.1.2 1; #Basic_auth ips
default 0; #Banned ips
}
Затем на кронштейне сервера:
server{
listen 80;
server_name example.com;
if ( $perm_group = 0 ){
return 403; # ips blacklisted return a 403;
}
if ( $perm_group = 1 ){
auth_basic "Restricted";
}
if ( $perm_group = 2 ){
auth_basic off;
}
auth_basic_user_file /etc/nginx/yourAuthFile; #make a file with user/password
# anything else will mean that are allowed, so we go with the normal handling.
location / {
#do what you need to do here
}
}
Я впервые делаю такой код, но он должен работать, прокомментируйте любую ошибку, и мы представим его, если что-то не так.
Если вы хотите отсортировать по группам большое количество IP-адресов, на карту вы можете включить файл, в котором будут сортироваться IP-адреса, чтобы вы могли сохранить свою конфигурацию nginx в чистоте.
Надеюсь, я помог.