nginx 限制ip併發數,也是說限制同一個ip同時連接伺服器的數量。如何Nginx限制同一個ip的連接數,限制併發數目,限制流量/限制頻寬? 通過下面nginx模組的使用,我們可以設置一旦併發連結數超過我們的設置,將返回503錯誤給對方。這樣可以非常有效的防止CC攻擊。在配合 iptables防火牆,基本上CC攻擊就可以無視了。Nginx限制ip連結數,Nginx如何限制併發數,同1個IP,nginx怎麼限制流量/限制頻寬?請看下文:
nginx 限制ip併發數,nginx限制IP連結數的範例參考:
limit_zone ctohome_zone $binary_remote_addr 20m;
limit_req_zone $binary_remote_addr zone=ctohome_req_zone:20m rate=2r/s
server { listen *:80; server_name www.ctohome.com .ctohome.com ; location / { proxy_pass http://1.2.3.4; include vhosts/conf.proxy_cache; } location ~ .*\.(php|jsp|cgi|phtml|asp|aspx)?$ { limit_conn ctohome_zone 2; limit_req zone=ctohome_req_zone burst=3; proxy_pass http://4.3.2.1; include vhosts/conf.proxy_no_cache; } }
如何Nginx限制同一個ip的連接數,限制併發數目
1.添加limit_zone
這個變數只能在http使用
vi /usr/local/nginx/conf/nginx.conf
limit_zone ctohome_zone $remote_addr 10m;
2.添加limit_conn
這個變數可以在http, server, location使用
我只限制一個網站,所以添加到server裡面
vi /usr/local/nginx/conf/host/www.ctohome.com.conf
limit_conn ctohome_zone 2;
3.重啟nginx
killall -HUP nginx
Nginx限制流量/限制頻寬?
關於limit_zone:http://wiki.nginx.org/NginxHttpLimitZoneModule
關於limit_rate和limit_conn:http://wiki.nginx.org/NginxHttpCoreModule
nginx可以通過HTTPLimitZoneModule和HTTPCoreModule兩個元件來對目錄進行限速。
http {
limit_zone one $binary_remote_addr 10m;
server {
location /download/ {
limit_conn ctohome_zone 2;
limit_rate 300k;
}
}
}
limit_zone,是針對每個IP定義一個存儲session狀態的容器。這個示例中定義了一個10m的容器,按照32bytes/session,可以處理320000個session。
limit_conn ctohome_zone 2;
限制每個IP只能發起2個併發連接。
limit_rate 300k;
對每個連接限速300k. 注意,這裡是對連接限速,而不是對IP限速。如果一個IP允許兩個併發連接,那麼這個IP就是限速limit_rate×2。
ngx_http_limit_zone_module
原文:http://www.ctohome.com/FuWuQi/f3/536.html