Nginx防攻擊工具教程一 ngx_http_limit_conn_module


   要限制用戶的連接數可以通過Limit zone模塊來達到目的,即限制同一用戶IP地址的並發連接數。

   該模塊提供了兩個命令limit_zone和limit_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_addr10m;

   

   客戶端的IP地址被用作會話,注意,這里使用的是$binary_remote_addr而不是$remote_addr,這是因為,$remote_addr的長度為7到15個字節,它的會話信息的長度為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@汪翰翔 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_zone和limit_conn。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com