IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> nginx 限制并发连接数
猫猫草
post 2009-09-21 20:06:20, Mon
Post #1


猫猫猫
***

Group: Power Cat
Posts: 626
Joined: 2006-12-8
Member No.: 2



代码
ngx_http_limit_zone_module

本模块可以针对条件,进行会话的并发连接数控制。(例如:限制每个IP的并发连接数。)

__配置示例__
http {
: limit_zone one $binary_remote_addr 10m;

: ...

: server {

: ...

: location /download/ {
: limit_conn one 1;
: }

指令
[#limit_zone limit_zone]
[#limit_conn limit_conn]

limit_zone
语法:limit_zone zone_name $variable the_size

默认值:no
作用域:http

本指令定义了一个数据区,里面记录会话状态信息。
$variable 定义判断会话的变量;the_size 定义记录区的总容量。

例子:
limit_zone one $binary_remote_addr 10m;
定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)。

您可以注意到了,在这里使用的是 $binary_remote_addr 而不是 $remote_addr。

$remote_addr 的长度为 7 至 15 bytes,会话信息的长度为 32 或 64 bytes。而 $binary_remote_addr 的长度为 4 bytes,会话信息的长度为 32 bytes。
当区的大小为 1M 的时候,大约可以记录 32000 个会话信息(一个会话占用 32 bytes)。

limit_conn
语法:limit_conn zone_name the_size

默认值:no

作用域:http, server, location
指定一个会话最大的并发连接数。当超过指定的最发并发连接数时,服务器将返回 "Service unavailable" (503)。
例子:
limit_zone one $binary_remote_addr 10m;

: server {
: location /download/ {
: limit_conn one 1;
: }
定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)。限制 /download/ 目录下,一个会话只能进行一个连接。简单点,就是限制 /download/ 目录下,一个IP只能发起一个连接,多过一个,一律503。
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 2024-11-1 16:29