微软最近对 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 地址。

如何在Azure上动态配置IP地址的更多相关文章

  1. Azure杂七杂八系列(二) - 如何在Azure上重新配置VM

    我们经常遇到这样的问题,  对于已经建立的VM进行性能提升, 比如需要更好的虚拟机或者需要迁移到其他的虚拟网络 那么我们可以使用以下的方法进行修改. 1. 如图所示, TESTVMXX位于North ...

  2. centos7配置IP地址

    有关于centos7获取IP地址的方法主要有两种,1:动态获取ip:2:设置静态IP地址 在配置网络之前我们先要知道centos的网卡名称是什么,centos7不再使用ifconfig命令,可通过命令 ...

  3. CentOS安装后的第一步:配置IP地址

    有关于centos7获取IP地址的方法主要有两种,1:动态获取ip:2:设置静态IP地址 在配置网络之前我们先要知道centos的网卡名称是什么,centos7不再使用ifconfig命令,可通过命令 ...

  4. 通过DHCP动态管理IP地址

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...

  5. 烂泥:VMWare Workation双网卡配置IP地址

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天给一个客户做远程项目实施,客户那边的服务器是Windows OS的,我们这边的业务 ...

  6. Linux网络管理1---(Linux配置IP地址,ifconfig、配置文件)

    1.Linux配置IP 地址 ifconfig命令临时配置IP 地址 ifconfig命令,最常用的功能是查看本机的网络的配置状态(当然也可以配置网络,不过是暂时性的),直接输入ifconfig命令就 ...

  7. [部署]CentOS配置IP地址

    环境 虚拟机:VMWare10.0.1 build-1379776 操作系统:CentOS7 64位 简介 CentOS7最小化安装(Minimal)时,是不带ifconfig指令的,该指令在net- ...

  8. 1. 通过DHCP服务器动态获取IP地址之后无法上网的解决方法

    故障:内网正常,在同一个局域网内的其它PC端通过DHCP获取IP地址并且可以正常上网. 1.通过wireshark抓包,使用ipconfig /renew时,wireshark内出现DHCP请求服务, ...

  9. 一、安装虚拟机,配置ip地址

    一.安装linux 注意点: 一.选择最小化安装的时候,要自定义安装软件,必须要安装下面的 如果没有安装上面的,需要用下面的命令来查询安装 如果没有安装就会出现各种问题 二.分区简单介绍 1.至少要一 ...

随机推荐

  1. Interface的多层继承

    我有一段如下代码,定义一个接口iInterface,cBase实现iInterface,cChild继承cBase,UML为 预期是想要cBase.F()的执行逻辑,同时需要cChild的返回值,所以 ...

  2. 特殊的Python

    在学习python之前,我也学习过C ,C++ ,Java ,PHP ,javascript,前端也学习过.但是在学习Python的这段时间里,多多少少也感觉到Python在语法方面的不同和特殊性. ...

  3. controller.pp 各组件的安装顺序

    controller 属性:         admin_address => $controller_node_address,         public_address => $c ...

  4. Windows下虚拟Linux

    andlinux cygwin virtualbox VMware XenServer

  5. Web.xml配置详解之context-param(转)

    本文转自:http://blog.csdn.net/liaoxiaohua1981/article/details/6759206 格式定义: <context-param> <pa ...

  6. Android 应用程序窗口化

    Android 应用程序窗口化与 Store 应用程序窗口化-Android,Windows,better,chrome,archon-远景-Win8|Win8.1|Windows8.1|Win10| ...

  7. Android WebView 开发详解(一)

    转载请注明出处  http://blog.csdn.net/typename/article/details/39030091 powered by meichal zhao 概览: Android ...

  8. stream_iterator、ostream_iterator 使用初探

    STL定义了供输入及输出的iostream iterator类,称为 istream_iterator和ostream_iterator,分别支持单一型别的元素的读取和写入. 使用方法: 1.包含头文 ...

  9. 正则 ?<= 和 ?= 用法

    参考网址:http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwWQhDvDEM51V_CcY_g1mZ7O ...

  10. C++文件读写总结

    在C++中如何实现文件的读写? 作者: infobillows 发表日期: 2007-04-03 21:33 点击数: 465 一.ASCII 输出 为了使用下面的方法, 你必须包含头文件<fs ...