Ограничения динамического IP-адреса для приложения .NET Core Web API в Azure Web App - PullRequest
0 голосов
/ 08 мая 2018

Я разработал приложение для веб-API с использованием .net core 1.0 "version": "1.0.5" и развертывание в веб-приложении Azure.

В настоящее время я сталкиваюсь с проблемой с конечной точкой API, когда пользователь одновременно достигает конечной точки. Так что для моего процента CPU / DTU увеличилось выше 60 до 100. Для этого я должен ограничить этого пользователя, когда он одновременно нажмет конечную точку API. Я понятия не имею, чтобы ограничить эти IP. Я очень новичок в этом вопросе.

Может кто-нибудь помочь мне решить эту проблему?

Примечание: - Когда он одновременно нажмет на конечную точку API, я должен заблокировать эти IP на ограниченный срок.

Спасибо

Parthiban.

1 Ответ

0 голосов
/ 10 мая 2018

Чтобы предотвратить такую ​​проблему, можно использовать решение, предоставляемое IIS 7.0, которое называется Модуль динамических IP-ограничений (DIPR) .

Основные функции динамического ограничения IP (DIPR):

Блокировка IP-адресов на основе количества одновременных запросов

Блокировка IP-адреса на основе количества запросов за период времени

Чтобы получить эту услугу на веб-сайте Azure, необходимо настроить некоторые изменения в файле web.config вашего сайта.

1. Фрагмент кода для обработки одновременных запросов

<system.webServer>
    <security>
        <dynamicIpSecurity>
            <denyByConcurrentRequests enabled="true" maxConcurrentRequests="10"/>
        </dynamicIpSecurity>
    </security>
</system.webServer>

Установите для включенного свойства denyByConcurrentRequests (в узле dynamicIpSecurity) значение true. Если клиент превысит количество одновременных запросов, его IP будет заблокирован временно для дальнейшего запроса на короткий период времени.

2. Код фрагмента для обработки maxRequests в течение указанного периода времени:

<system.webServer>
   <security>
      <dynamicIpSecurity>
         <denyByRequestRate enabled="true" maxRequests="15" requestIntervalInMilliseconds="5000"/>
      </dynamicIpSecurity>
   </security>
</system.webServer>

Установить включенное свойство denyByRequestRate. Свойство maxRequests определяет количество запросов, которые данный IP-адрес клиента может отправить на ваш сайт, а requestIntervalInMilliseconds определяет временные рамки.

IIS автоматически начнет блокировать запросы с IP-адресов, когда клиент превысит указанное вами правило . Таким образом, в соответствии со значением, которое я установил для клиента, делающего более 15 запросов в течение 5 секунд, он будет временно заблокирован.

Вы можете обратиться к , чтобы настроить динамические ограничения IP-адресов в веб-сайтах Windows Azure , если у вас есть какие-либо сомнения.

...