Module ngx_http_limit_req_module | english русский 简体中文 עברית 日本語 türkçe 新闻 [en] nginx 介绍 下载 [en] 安全漏洞 [en] 文档 FAQ 外部连接 [en] 书籍 [en] 支持 [en] 捐献 [en] trac wiki nginx.com | |||||||||||||||||||
翻译内容可能已经过旧。 你可以通过 英文版本 查看最近的更新。
配置示例
http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... server { ... location /search/ { limit_req zone=one burst=5; }
指令
设置对应的共享内存限制域和允许被处理的最大请求数阈值。 如果请求的频率超过了限制域配置的值,请求处理会被延迟,所以 所有的请求都是以定义的频率被处理的。 超过频率限制的请求会被延迟,直到被延迟的请求数超过了定义的阈值 这时,这个请求会被终止,并返回503 (Service Temporarily Unavailable) 错误。这个阈值的默认值等于0。 比如这些指令: limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { limit_req zone=one burst=5; } 限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个。
如果不希望超过的请求被延迟,可以用 limit_req zone=one burst=5 nodelay;
这个指令出现在版本 0.8.18.
设置你所希望的日志级别,当服务器因为频率过高拒绝或者延迟处理请求时可以记下相应级别的日志。
延迟记录的日志级别比拒绝的低一个级别;比如,
如果设置“
设置一块共享内存限制域的参数,它可以用来保存键值的状态。 它特别保存了当前超出请求的数量。 键的值就是指定的变量(空值不会被计算)。 示例用法: limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
这里,状态被存在名为“one”,最大10M字节的共享内存里面。对于这个限制域来说 平均处理的请求频率不能超过每秒一次。
键值是客户端的IP地址。
如果不使用 请求频率可以设置为每秒几次(r/s)。如果请求的频率不到每秒一次, 你可以设置每分钟几次(r/m)。比如每秒半次就是30r/m。
|