扩展前面的例子,我们可以对白名单上的IP地址应用速率限制:
白名单上的IP地址与第一个速率限制( req_zone )不匹配,但匹配第二个( req_zone_wl ),因此每秒限制为15个请求。
不在白名单上的IP地址与两个速率限制相匹配,所以限制性较强的一个适用:每秒5个请求。
配置相关功能
记录
默认情况下,Nginx 记录由于速率限制而延迟或丢弃的请求,如下例所示:
日志条目中的字段包括:
limitingrequests - 指示日志条目记录速率限制。
excess - 此请求表示的配置速率每毫秒的请求数。
zone - 定义强加的限制的区域。
client - 发出请求的客户client IP地址。
server - server IP地址或主机名。
request - 客户端request实际HTTP请求。
host - Host HTTP头的值。
默认情况下,Nginx在error级别记录被拒绝的请求,如上例中的[error]所示(它记录延迟的请求在一个较低的级别,所以默认info )。 要更改日志级别,请使用limit_req_log_level指令。 在这里,我们设置了拒绝的请求来记录warn级别:
错误代码发送到客户端
默认情况下,当客户端超出速率限制时,Nginx以状态码503作为响应。
使用limit_req_status指令来设置一个不同的状态码(在这个例子中是444 ):
拒绝所有请求到特定的位置
如果您想要拒绝所有特定URL的请求,而不是限制它们,请为其配置一个块并包含all指令:
以上就是我们关于Nginx和Nginx Plus更多速率限制功能以及对客户端IP地址配置不同的白名单和黑名单来匹配不同的高级配置的介绍,同时我们也介绍了如何记录被拒绝和延迟的记录。希望通过今天本文章的分享,能够对大家有所帮助。同时如果大家有更好的见解也可以与我们交流互动,我们将十分欢迎。