nginx上了一个APP提供给用户下载,考虑到带宽占用的问题,决定在nginx上做下载限速处理。

操作系统:Centos6.7 X64

nginx版本:nginx/1.11.3

根据官方文档:

对nginx.conf进行配置:

http {
...
limit_conn_zone $binary_remote_addr zone=addr:10m; # 添加该行
...
include vhost/*.conf;
}

因为我这里是APP下载业务是定义的一个nginx虚拟主机

[root@localhost vhost]# pwd
/usr/local/nginx/conf/vhost server {
listen *:;
server_name localhost;
location / {
root /usr/local/test;
index index.html;
limit_conn addr 1; # 每个客户端只允许一个线程。
limit_rate 100k;  # 每个线程最大下载速度100k
} }
 
每个客户端最终的下载速度 = limit_conn * limit_rate 我这里很明显是100kb/s

启动服务,并进行测试:

在网站根目录写入一个大文件并尝试下载:

[root@localhost test]# dd if=/dev/zero of=test.txt bs=1M count=
+ records in
+ records out
bytes (1.0 GB) copied, 2.99695 s, MB/s

本地直接使用wget进行测试: 最大速度100kb/s

客户端使用浏览器进行测试:

可以看见,nginx限速成功。我一个是本地测试,一个是局域网内部测试,当然公网测试就更加明显了。

[ nginx ] 带宽下载限速的更多相关文章

  1. nginx做下载限速

    nginx做下载限速-szszszsz-ChinaUnix博客 nginx做下载限速 2009-12-25 14:34:57 分类: 系统运维 nginx做下载服务器,在性能上满足需求.自带limit ...

  2. web服务器-Nginx下载限速

    web服务器-Nginx下载限速 一. 限速介绍 在生产环境中,为了保护WEB服务器的安全,我们都会对用户的访问做出一些限制,保证服务器的安全及资源的合理分配. 限流(rate limiting)是N ...

  3. nginx secure_link下载防盗链

    下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效 ...

  4. Python网络爬虫笔记(二):链接爬虫和下载限速

    (一)代码1(link_crawler()和get_links()实现链接爬虫) import urllib.request as ure import re import urllib.parse ...

  5. Nginx 配置下载附件让浏览器提示用户是否保存

    Nginx配置下载附件让浏览器提示用户是否保存   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 问题描述: 前端页面,IE11浏览器下请求下载附件模板,针对xls ...

  6. C# HttpWebResponse下载限速

    在使用HttpWebResponse请求网络内容的时候,一般如下面这种方法: code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 非生产环境代码,请在实际使用时进行 ...

  7. 【Nginx】下载,请求限速,根据URL参数限速

    这个场景是限制单个连接的下载速度,还有限制单个IP的连接数,或者单位时间内的请求数,实验环境 nginx1.9.x. 小例子为主,具体的细节请多看文档. 限制下载速度 location /downlo ...

  8. nginx对网站限速

    注意:nginx 1.1.8 之后的版本的语法改为limit_conn_zone $binary_remote_addr zone=NAME:10m; NAME 就是 zone 的名字限制连接数:要限 ...

  9. php nginx fastdfs 下载文件重命名

    其实fdfs可以传入一个filename参数,指定文件名.. M00/00/00/fwAAAVGMateAafjTAAAABBW-xbM368.txt?filename=test.txt 这样下载时用 ...

随机推荐

  1. 容器基础(五): 实现一个简单容器sdocker

    在前面几部分的基础上, 我们更新一下代码,实现一个简单容器 sdocker. sdocker目录构成 linux: # tree . ├── Makefile ├── cpu-test.c # 由cp ...

  2. POJ 3856 deltree(模拟)

    Description You have just run out of disk space and decided to delete some of your directories. Rati ...

  3. linux进程同步之信号量

    首先了解一下,信号量机概念是由荷兰科学家Dijkstr引入,值得一提的是,它提出的Dijksrtr算法解决了最短路径问题. 信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享 ...

  4. ssh问题_2

    前一段时间配置hadoop集群环境,发现一个现象,教程中的命令形式是ssh hostname,当然这个hostname应该是在ssh发起者的hosts文件中和相应的IP对应:现在问题来了: 我用的是m ...

  5. libevent 多线程

    对于evbuffer,如果libevent使用了evthread_use_pthreads();那么所有的单个evbuffer操作就已经是原子的了,调用操作相关的接口进去就上锁,出来解锁,那么 evb ...

  6. 关于MySQL的异常处理 Can't connect to MySQL server on localhost (10061)解决方法

    首先检查MySQL 服务没有启动>如果没有启动,则要启动这个服务. 昨天,重起服务器后出现MySQL 'localhost' (10061)错误,开始以为是因为数据库链接打开过多,数据库资源耗尽 ...

  7. Hadoop Yarn on Docker

    搭建Hadoop Yarn on Docker 一.概览 Docker基于Linux Container技术整合了一堆易用的接口用于构建非常轻量级的虚拟机.Docker Container Execu ...

  8. LeetCode -- Best Time to Buy and Sell Stock系列

    Question: Best Time to Buy and Sell Stock Say you have an array for which the ith element is the pri ...

  9. phaser常用API总结

    1. 游戏画布的尺寸 var width = game.width, height = game.height;   2. 中心点坐标 var game = new Phaser.Game(...); ...

  10. axios超时重发

    axios的超时是在response中处理的,所以要在response中添加拦截器: axios.interceptors.response.use(undefined, function axios ...