我们最近对 Windows Azure 网站进行了升级,并启用了IIS8的动态 IP 限制模块。现在,开发人员可以为其网站启用并配置动态 IP 限制功能(或简称 DIPR)。

可以通过以下链接查看此 IIS8 功能的完整概述:

http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-dynamic-ip-address-restrictions

DIPR 功能主要为开发人员提供两种保护:

·   根据并发请求数阻止 IP 地址

·   根据某一时段的请求数阻止 IP 地址

此外,开发人员还可以配置 DIPR 的行为,例如,针对被阻止的请求, 发回的HTTP 状态代码的类型。

在 Azure 网站中,开发人员可以使用添加到 web.config 文件(位于该网站的根文件夹)中的配置部分来配置 DIPR。

如果您要根据并发请求数(即任意时刻正在发出的活动请求数)来阻止连接,请向该网站的 web.config 文件添加以下配置段。

如果在 denyByConcurrentRequests 元素中将enabled 属性设置为
true,则在最多并发请求数超过 maxConcurrentRequests 属性中设置的值(在以上示例中设置为 10)时,IIS 将自动开始阻止该 IP 地址的请求。

另一方面,如果您要根据特定时间窗口内发出的请求总数阻止连接,则可以使用以下配置段:

在以上示例中,如果在 denyByRequestRate 元素中将enabled 属性设置为
true,则会指示 IIS 在 requestIntervalInMilliseconds 定义的时间窗口(在此示例中设置为 2000 毫秒)内观察到的请求总数超过maxRequests 属性中设置的值(在此示例中设置为 10)时阻止该 IP 地址的请求。因此,在 2 秒的时间段内发出 10 个以上请求的客户端将被阻止。

最后,开发人员还可以选择同时启用这两种阻止机制。以下代码段既可指示 DIPR 阻止并发请求数超过 10 个的客户端,也可指示 DIPR 阻止在 5 秒时间窗口内总共发出 20 个以上请求的客户端:

在 DIPR 阻止某个 IP 地址后,该地址会一直保持阻止状态,直到当前时间窗口结束为止,之后,该 IP 地址将再次能够向该网站发出请求。例如,如果requestIntervalInMilliseconds
设置为 5000(5 秒),而某个 IP 地址在 2 秒刻度处被阻止,则该地址在剩下 3 秒(即,当前时间窗口内的剩余时间)内会一直保持阻止状态。

开发人员可以自定义客户端被阻止时返回的错误,方法为配置 dynamicIpSecurity元素自身的
denyAction 属性。denyAction 的允许值包括:

·   AbortRequest(返回 HTTP 状态代码 0)

·   Unauthorized(返回 HTTP 状态代码 401)

·   Forbidden(返回 HTTP 状态代码 403)。请注意,这是默认设置。

·   NotFound(返回 HTTP 状态代码 404)

例如,如果您要发送 404 状态代码,而不是发送默认代码(即 Forbidden 403),则可使用以下配置:

这里,我们会遇到这样一个问题:在 Azure 网站中运行时,DIPR 会看到什么 IP 地址?在 Windows Azure 中运行意味着 Web 应用程序正在使用多种负载平衡器。也就是说,呈现给该网站的客户端 IP 地址可能是上游负载平衡器的地址,而不是 Internet 上实际客户端的地址。但是,Azure 网站将为您自动执行必要的转换,确保 DIPR 模块“看到的”客户端 IP 地址是发出 HTTP 请求的 Internet
客户端的实际 IP 地址。

本文翻译自:

http://blogs.msdn.com/b/windowsazure/archive/2013/08/27/confirming-dynamic-ip-address-restrictions-in-windows-azure-web-sites.aspx

在 Windows Azure 网站中配置动态 IP 地址限制的更多相关文章

  1. 进一步探索:Windows Azure 网站中解锁的配置选项

     编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站 (WAWS) 中管理网站时,许多选项可使用 Azu ...

  2. 在 Windows Azure 网站中进行纵向扩展和横向扩展

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...

  3. 探索 Windows Azure 网站中的自动伸缩功能

     去年10月,我们发布了若干针对 WindowsAzure平台的更新,其中一项更新是添加了基于日期的自动伸缩调度支持(在不同的日期设置不同的规则). 在这篇博客文章中,我们将了解自动伸缩的概念,并 ...

  4. 禁用 Windows Azure 网站中的 ARR 实例关联

    编辑人员注释: 本博客文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站中设置网站的多个实例是横向扩展网站的绝佳方式,Azur ...

  5. 如何在Ubuntu Server 18.04 LTS中配置静态IP地址

    安装Ubuntu Server 18.04后需要分配一个的静态IP地址.先前的LTS版本Ubuntu 16.04使用/etc/network/interfaces文件配置静态IP地址,但是Ubuntu ...

  6. Python练习:爬虫练习,从一个提供免费代理的网站中爬取IP地址信息

    西刺代理,http://www.xicidaili.com/,提供免费代理的IP,是爬虫程序的目标网站. 开始写程序 import urllib.requestimport re def open_u ...

  7. Windows Azure 网站的 IP 和域限制

    编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写. 配置 Azure 网站 (WAWS) 的 IP 和域限制一直是用户最迫切希望我们提供 ...

  8. Windows Azure 网站上的 WebSocket 简介

    编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写. Windows Azure 网站最近新增了对 WebSocket 协议的支持..NE ...

  9. Windows Azure 网站:应用程序字符串和连接字符串的工作原理

    编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写. Windows Azure 网站上有一个方便的功能,即开发人员可将 Azure 中的 ...

随机推荐

  1. Java 初始化字段方式和顺序

    Java 初始化字段方式和顺序: 类加载时直接初始化静态字段; 类加载时调用静态方法初始化静态字段; 实例化对象时,在调用构造函数之前代码块中初始化字段; 实例化对象时,在调用构造函数之时初始化字段; ...

  2. CodeForces 379 D. New Year Letter

    枚举开头结尾的字母,枚举ac的个数,总AC个数就是两个Fibonacci数列的和..... D. New Year Letter time limit per test 1 second memory ...

  3. 走进C标准库(1)——assert.h,ctype.h

    默默觉得原来的阅读笔记的名字太土了,改了个名字,叫做走进C标准库. 自己就是菜鸟一只,第一次具体看C标准库,文章参杂了对<the standard C library>的阅读和对源码的一些 ...

  4. sar

    雷达卫星数据产品介绍(一) — ERS 卫星 ERS-1 ERS-2 欧空局分别于 1991 年和 1995 年发射. 携带有多种有效载荷, 包括 侧视合成孔径雷达(SAR)和风向散射计等装置),由于 ...

  5. Oracle EBS-SQL (BOM-5):检查有BOM但物料状态为NEW的物料.sql

    select DISTINCT     msi.segment1 成品编码    ,msi.description 成品描述    ,msi.item_type 物料类型    ,msi.invent ...

  6. poj2163

    #include <stdio.h> #include <stdlib.h> int main() { ; ]; scanf("%d %d %d",& ...

  7. 解决ArcSDE图层名被占用的问题

    点击文章查看 当你发现上面那篇文章时你已经接近成功了,但还差最后一步! <!- -delete   from sde.GDB_OBJECTCLASSES where NAME = upper(' ...

  8. Sequence operation(线段树区间多种操作)

    Sequence operation Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. golang之匿名函数

    package main import "fmt" /* squares返回一个匿名函数 * 该匿名函数每次调用返回下一个数的平方 * func name(parameter-li ...

  10. 关于ECMAScript6一些知识

    ECMAScript 是当前 JavaScript 语言规范的最新标准,一般称为 es6, 但是因为 该标准规范是在 2015年6月份发布的,所以也叫作 ECMAScript 2015 let 变量声 ...