Nginx模块参考手册:HTTP Limit Requests模块(HTTP Limit Requests)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除。

这个模块允许为一个指定的会话或者某个特殊情况限制请求数目。

示例配置

http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... server { ... location /search/ { limit_req zone=one burst=5; }

指令

limit_req_log_level

语法:limit_req_log_level info|notice|warn|error
默认值:warn
使用字段:http
指定记录日志的等级。

limit_req_zone

语法:limit_req_zone $session_variable zone=name_of_zone:size rate=rate
默认值:none
使用字段:http
指令描述会话状态存储区域。
指令描述会话状态存储的某个区域,会话的值根据给定的变量,如下例:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

在这种情况下,将为一个名为“one”的区域分配10MB,这个区域的平均查询速度为每秒最多1个请求。
会话将追踪每个用户,但是注意它替换了变量$remote_addr,我们使用的是$binary_remote_addr,减少会话的大小为64字节,一个1MB的区域可以包含大约16000个会话状态。
速度可以设置为每秒处理请求数和每分钟处理请求数,其值必须是整数,所以如果你需要指定每秒处理少于1个的请求,2秒处理一个请求,可以使用 “30r/m”。
当会话状态储存区域为1M时理论上可以处理32000个会话,每个会话大小为32字节。

limit_req

语法: limit_req=zone burst=burst [nodelay]
默认值:none
使用字段:http, server, location
这个指令指定区域(zone)可能的最大请求爆发值(burst),如果其值超过这个数,请求被延时,以便查询按照给定的速度处理。多余的请求将被延迟直到他们的数目小于burst值,在这种情况下,请求将得到”Service unavailable” (503)代码,默认burst的值为0。
如下例:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { limit_req zone=one burst=5; }

允许一个用户平均每秒处理不超过1个请求,这个区域最多同时处理不超过5个查询,如果在burst值之外的额外请求不可用,可以使用nodelay参数:

limit_req zone=one burst=5 nodelay;

时间: 2024-09-21 04:30:03

Nginx模块参考手册:HTTP Limit Requests模块(HTTP Limit Requests)的相关文章

Nginx模块参考手册:Stub Status模块(Stub Status)

如果要使用这些模块,则必须在编译时指定相关的编译参数. 这个模块可以取得一些nginx的运行状态.要使用这个模块必须在编译时指定下列编译参数: --with-http_stub_status_module 示例配置: location /nginx_status { # copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/ stub_status on; access_log off; allo

Nginx模块参考手册:User ID模块(User ID)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 模块ngx_http_userid_module为连接发布cookie,主要使用$uid_got和$uid_set变量,注意:$uid_got和$uid_set无法在SSI中取得,因为SSI过滤模块工作在userid模块过滤之前.这个模块相当于Apache的mod_uid模块.示例配置: userid on;userid_name uid;userid_domain example.com;userid_pat

Nginx模块参考手册:URL重写模块(Rewrite)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块允许使用正则表达式重写URI(需PCRE库),并且可以根据相关变量重定向和选择不同的配置.如果这个指令在server字段中指定,那么将在被请求的location确定之前执行,如果在指令执行后所选择的location中有其他的重写规则,那么它们也被执行.如果在location中执行这个指令产生了新的URI,那么location又一次确定了新的URI.这样的循环可以最多执行10次,超过以后nginx将返回5

Nginx模块参考手册:HTTP核心模块(HTTP Core)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 摘要 Nginx处理HTTP的http://www.aliyun.com/zixun/aggregation/17626.html">核心功能模块 指令 aio 语法:aio [on|off|sendfile] 默认值:off使用字段:http, server, location这个指令在Linux内核2.6.1922以上版本可以使用,对于Linux内核,这个指令需要配合directio指令,使用这个指令

Nginx模块参考手册:Secure Link模块(Secure Link)

如果要使用这些模块,则必须在编译时指定相关的编译参数. 这个模块为一个必需的安全性令牌检查请求网址.要使用这个模块必须在编译时指定下列编译参数(0.7.18后版本可用): --with-http_secure_link_module 示例配置: location /prefix/ { secure_link_secret secret_word; #如果哈希不正确$secure_link将为一个空字符串. if ($secure_link = "") { return 403; } #

Nginx模块参考手册:HTTP Referer模块(HTTP Referer)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 当一个请求头的http://www.aliyun.com/zixun/aggregation/16918.html">Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点.这个头可以随意的伪造,因此,使用这个模块并不能100%的阻止这些请求,绝大多数拒绝的请求来自一些典型的浏览器,可以认为这些典型的浏览器并不能提供一个"Referer"头,甚至是那些正确的请求.如

Nginx模块参考手册:Empty GIF模块(Empty GIF)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块在内存中保存一个能够很快传递的1×1透明GIF.简单用法: location = /_.gif { empty_gif;}&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 指令 empty_gif 语法:empty_gif 默认值:n/a 使用字段:location

Nginx模块参考手册:字符集设置模块(Charset)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块将在应答头中为"Content-Type"字段添加字符编码.此外,这个模块可以将数据重新编码,只能在单向对其进行重新编码,即来自服务器到达客户端.配置实例: charset windows-1251;source_charset koi8-r; 指令 charset 语法:charset encoding|off 默认值:charset off 使用字段:http, server, locat

Nginx模块参考手册:邮件认证模块(Mail Auth)

示例配置: auth_http localhost: 9000/cgi-bin/nginxauth.cgi; auth_http_timeout 5;} 指令 auth_http 语法:auth_http URL 默认值:no 使用字段:mail, server 为认证设置网址到扩展HTTP17853.html">类服务器.到达的协议请查看邮件核心模块中的pop3_auth指令. auth_http_header 语法:auth_http_header header value 默认值:n

Nginx模块参考手册:Split Clients模块(Split Clients)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. ngx-http-split-clients模块基于一些特定条件分开客户端连接,(例如ip地址,请求头,cookies等)示例配置: http { split-clients "${remote-addr}AAA" $variant { 0.5% .one; 2.0% .two; - ""; } server { location / { index index${variant}