<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="nginx限速及连接数限制">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">熊茂祥</a><br />时间:2012-07-02 00:00<br />分类:<a href="index.php?action=list&amp;cid=5&amp;hash=">技术文档</a><br />标签:<a href="index.php?action=tags&amp;item=nginx&amp;hash=">nginx</a>, <a href="index.php?action=tags&amp;item=%E9%99%90%E9%80%9F&amp;hash=">限速</a>, <a href="index.php?action=tags&amp;item=%E8%BF%9E%E6%8E%A5%E6%95%B0&amp;hash=">连接数</a>, <a href="index.php?action=tags&amp;item=%E9%99%90%E5%88%B6&amp;hash=">限制</a>, <a href="index.php?action=tags&amp;item=%E5%B9%B6%E5%8F%91&amp;hash=">并发</a><br />内容:在nginx.conf的http{}添加
limit_zone one $binary_remote_addr 10m;

然后在 虚拟机里写
location / {
limit_conn one 1; 线程
limit_rate 100k; 速度
表示限速100K 每个客户端只允许一个线程

最终速度=rate * conn

-----------------------------------------------------------------

limit_zone one $binary_remote_addr 32k;
server {
listen       80;
server_name  192.168.1.222;
location / {
root   /var/www/html;
index  index.html index.htm index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
limit_conn one 2;
limit_rate 10k;
}


说明：

limit_zone,针对每个IP定义一个存储session状态的容器。要求大于等于32K。

limit_conn,限制每个IP发起的连接数，比如本实例设了2个，当我用IE进行单线程下载的时候还可以打开该站点的一个网页。而用迅雷下载时，迅雷会启用2个线程下载，所以当再去打开网页的时候，服务器端会返回错误请求。该值建议设置得高一些，比如15左右。

limit_rate,限制每个连接速度为10K，此限制是针对单个线程，比如这个例子，我用IE下载是10K，当用迅雷时它会占用2个线程，所以迅雷下载速度为20K，此实例也很好的解释了迅雷下载速度快的原因。
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
