全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 3555|回复: 37
打印 上一主题 下一主题

急救:nignx怎么对网站或者目录或者IP进行带宽限制?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-14 12:30:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
弄了个图片站,现在20多mb/s了,要死人了
分几种情况
1、服务器上有很多个站,怎么才能只限制某个站的?
2、怎么才能只限制某个站某个目录的?
3、怎么才能针对来访问者IP限制带宽?
2#
发表于 2009-11-14 12:33:12 | 只看该作者

回复 1# 的帖子

IIS有这个功能,其他的我都不清楚。
3#
发表于 2009-11-14 12:37:42 | 只看该作者
GOOGLE 一下有很多教程

——————————————
使用nginx的标准模块ngx_http_limit_zone_module,进行会话的并发连接数控制:
http {
    limit_zone   one $binary_remote_addr 10m;
#定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)
    ...
    server {
        ...
        location /attachments/ {
            limit_conn   one 1;
            limit_rate 100k;
        }
# 限制 /attachments/ 目录下,一个会话只能进行一个连接。超过一个,则返回503。imit_rate 来控制该目录的下载速度。
}


这是简单的nginx的方案,更高级的应用应该是在客户端类型或者根据日志分析后,针对具体问题做文章,例如对$http_user_agent的特殊内容进行匹配,然后返回503。

为什么要返回503?如果直接返回403,有可能被下载工具发现,403的状态被认为被禁止了,然后进行调整继续作案。而返回一个503,对服务器来说影响不大,只占用一个nginx的线程而已。

评分

参与人数 1威望 +7 收起 理由
RyoKazami + 7 我很赞同

查看全部评分

4#
发表于 2009-11-14 12:38:41 | 只看该作者
http://wiki.nginx.org/NginxChs
NGINX 中文文档
5#
发表于 2009-11-14 12:42:14 | 只看该作者

回复 3# 的帖子

通过限制连接数来变相限制带宽。
6#
 楼主| 发表于 2009-11-14 12:42:33 | 只看该作者
“一个会话只能进行一个连接。超过一个,则返回503”
如果一个页面上有10个图,打开这个页面,是不是只能显示一个图,其他图都显示X?
我想针对一个来访者IP限制一个连接,就是说其他9个图不会显示X,而是一个一个地下载,可否呢?
7#
发表于 2009-11-14 12:43:53 | 只看该作者
你把图片分页啊  一个图片一页
8#
 楼主| 发表于 2009-11-14 12:45:35 | 只看该作者
limit_rate 100k;
是针对所有人的还是针对一个IP的?
9#
 楼主| 发表于 2009-11-14 13:00:43 | 只看该作者
好像不起作用
10#
发表于 2009-11-14 13:01:23 | 只看该作者

回复 8# 的帖子

Limit_rate

语法:limit_rate speed

默认值:no

Context:http,server,location

用来限制服务器对客户的应答传输速率,速率是B/S,此限制仅对一个连接有效,如果客户发起两个连接,速率将会是高于限制的两倍。

服务器级别上限制用户部分的速度很有必要,那么,禁用limit_rate就不合适了,此时可以使用$limit_rate,通过指定这个变量的值来实现此功能。
案例:
server{
                if($slow){
                            set $limit_rate 4k;
}
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-1-13 12:43 , Processed in 0.065128 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表