nginx 限制使用者併發連線數

nginx_web發表於2012-06-13

 

 

要限制使用者的連線數可以通過Limit zone模組來達到目的,即限制同一使用者IP地址的併發連線數。

 

該模組提供了兩個命令limit_zonelimit_conn,其中limit_zone只能用在http區段,而limit_conn可以用在http, server, location區段。

 

示例配置

 

http {

  limit_zone   one  $binary_remote_addr  10m;

 

  server {

    location /download/ {

      limit_conn   one  1;

    }

  }

}

   

   

 

    該模組提供了以下3條指令:

 

指令名稱:limit_zone

    能:該指令用於定義一個zone,該zome將會被用於儲存會話狀態。能夠儲存的會話數量是由分被交付的變數和memory_max_size的大小決定的。

 

例如:

 

limit_zone one $binary_remote_addr 10m;

   

    客戶端的IP地址被用作會話,注意,這裡使用的是$binary_remote_addr而不是$remote_addr,這是因為,$remote_addr的長度為715個位元組,它的會話資訊的長度為 32 64 bytes$binary_remote_addr 的長度為 4 位元組,會話資訊的長度為 32 位元組。當設定1M的一個zone時,那麼如果是用$binary_remote_addr方式,該zone將會存放32000個會話。

    : limit_zone zone_name $variable memory_max_size

默 認 值: no

使用環境: http

 

指令名稱:limit_conn

    能:該指令用於為一個會話設定最大的併發連線數。如果併發請求數超過這個限制,那麼將會出現"Service unavailable" (503)

例如:

 

limit_zone   one  $binary_remote_addr  10m;

 

server {

  location /download/ {

  limit_conn   one  1;

}

 

    這個設定將會使得來自用同一個IP的併發連線不能超過1個連線。

 

    法:: limit_conn zone_name max_clients_per_ip

默 認 值: no

使用環境: http, server, location

 

 

指令名稱:limit_conn_log_level

    : limit_conn_log_level info | notice | warn | error

默 認 值: error

使用環境: http, server, location

    能:該指令用於設定日誌的錯誤級別,當達到連線限制時,將會產生錯誤日誌。

 

配置例項

 

看下面的一個例子:

 

[root@flv conf]# cat nginx.conf

 

worker_processes  4;

 

events {

    worker_connections  10240;

}

 

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile           on;

    keepalive_timeout  65;

    limit_zone   flv_down  $binary_remote_addr  10m;

 

    server {

        listen       80;

        server_name  flv.xxx.com;

……

        location /download {

               limit_conn   flv_down  1;                     

        }

 

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

 

在這個例子中,我們使用了兩個命令,limit_zonelimit_conn

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-732627/,如需轉載,請註明出處,否則將追究法律責任。

相關文章