Мне нужно регулировать соединения/запросы на сервере NGINX как для запросов http, так и для http2. Однако регулирование не должно применяться к конкретным IP-адресам CDN (которые уже указаны в геоблоке).
У меня есть следующая конфигурация для ограничения запросов http/http2, когда конкретное требование CDN отсутствует.
карта $http2 $http1connlimitkey {
По умолчанию "";
"" $binary_remote_addr;
}
карта $http2 $http2connlimitkey {
по умолчанию $binary_remote_addr;
"""";
}
Любой из http1connlimitkey
и http2connlimitkey
ключ установлен на двоичный_удаленный_адрес
в зависимости от типа соединения.
Теперь, независимо от типа соединения, если соединение исходит из CDN, мне нужно установить указанные выше ключи пустыми, чтобы избежать регулирования соединения.
Я следую подходу, указанному в этом решении Как ограничить скорость в nginx, но включая/исключая определенные IP-адреса? для отображения источника запроса.
гео $ белый список {
по умолчанию 0;
# CIDR в списке ниже не ограничены
1.2.3.0/24 1;
9.10.11.12/32 1;
}
карта $ белый список $ лимит {
0 $binary_remote_addr;
1 "";
}
Как установить http1connlimitkey
и http2connlimitkey
чтобы очистить, если запрос от CDN.
Один из способов, которым я думаю, - это иметь карту, как показано ниже.
карта $ белый список $ cdn {
0 ""
1 «КДН»;
}
карта "$cdn$http2" $http1connlimitkey {
"^CDN" ""
"" $binary_remote_addr;
По умолчанию "";
}
карта "$cdn$http2" $http2connlimitkey {
"^CDN" ""
по умолчанию $binary_remote_addr;
"""";
}
Любой другой лучший способ справиться с тем же.
Мне нужно избежать ограничений http и http2 в случае, если запрос исходит из CDN.
Спасибо