WEB服务与NGINX(9)-NGINX作为下载服务器的相关配置
1. NGINX的目录索引功能
autoindex on | off;
Default: autoindex off;
Context: http, server, location
启用或禁用目录列表功能,on代表启用。
当访问一个目录时(以/结尾),配置的index的默认页面不存在,会将请求传递给ngx_http_autoindex_module模块处理,该模块会处理以“/”结尾的请求,并以目录的形式展示给客户端,以供客户端下载。
autoindex_exact_size on | off;
Default: autoindex_exact_size on;
Context: http, server, location
指定是否在目录列表中输出确切的文件大小,on以字节为单位显示,off显示易读的大小。
autoindex_localtime on | off;
Default: autoindex_localtime off;
Context: http, server, location
指定目录列表中显示的时间是本地的时间还是GMT(格林威治)时间,on表示本地时区,off表示格林威治时区。
示例:搭建企业内部yum仓库
#1.服务器端配置
[root@nginx01 web1]# cat /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
charset utf-8,gbk; <==设定字符集,防止中文字符出现乱码。
location / {
root /data/nginx/html/web1;
index index.html;
}
location /repo { <==搭建repo仓库,不能配置index默认返回文件
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
alias /misc/cd;
}
}
#2.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service
客户端测试:
客户端使用windows,首先要在hosts文件中增加域名解析,hosts文件的路径为C:\Windows\System32\drivers\etc,文件增加192.168.20.20 www.nginx01.com行,然后在浏览器进行测试访问http://www.nginx01.com/repo/进行测试。


2. NGINX的限速功能
nginx有三种限速场景:
- 下载限速:限制用户的下载速度,使用Nginx ngx_http_core_module模块实现
- 请求限制:限制用户单位时间内所产生的http连接数,使用Nginx ngx_http_limit_req_module实现
- 连接限制:限制同一时间的连接数,以及并发连接数的限制,使用Nginx ngx_http_limit_conn_module实现
2.1 限制下载速度
limit_rate rate;
限制响应给客户端的传输速率,单位是bytes/second,默认值0表示无限制。
支持环境:http, server, location, if in location
Nginx ngx_http_core_module模块实现
场景示例:搭建的镜像站点限制用户的下载速度,一开始对用户不限速,当下载达到3M时,限制用户的下载速度为10Kbps。
#1.服务端配置文件
[root@nginx01 web1]# cat /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx01.com;
charset utf-8,gbk; location / {
root /data/nginx/html/web1;
index index.html;
} location /repo {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
alias /misc/cd;
limit_rate_after 3m; <==下载文件3m之前不限速
limit_rate 10k;
}
} #2.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #3,客户端下载测试,开始的3M不限速,3M过后开始限速10Kbps
[root@xuzhichao ~]# wget http://www.nginx01.com/repo/Packages/valgrind-3.15.0-11.el7.x86_64.rpm
--2021-06-16 23:09:53-- http://www.nginx01.com/repo/Packages/valgrind-3.15.0-11.el7.x86_64.rpm
Resolving www.nginx01.com (www.nginx01.com)... 192.168.20.20
Connecting to www.nginx01.com (www.nginx01.com)|192.168.20.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12145800 (12M) [application/x-redhat-package-manager]
Saving to: ‘valgrind-3.15.0-11.el7.x86_64.rpm’
37% [===================> ] 4,612,096 10.0KB/s eta 3m 54s
2.2 限制单位时间内产生的http请求数
limit_req_zone key zone=name:size rate=rate;
Default: —
Context: http
limit_conn zone number [burst=number] [nodelay];
Default: —
Context: http, server, location
场景示例:基于来源IP对请求速率限制,限制每个客户端ip每秒只能处理一个请求,可以突发超过2个请求放入缓存区,后续的请求返回503。
#1.nginx配置文件如下:
[root@nginx01 web1]# cat /etc/nginx/conf.d/virtualhost.conf
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s; <==只能定义在http语句块中 server {
listen 80;
server_name www.nginx01.com; limit_req zone=req_one burst=2 nodelay;
charset utf-8,gbk; location / {
root /data/nginx/html/web1;
index index.html;
} error_page 500 502 503 504 404 /errorpage.html;
location = /errorpage.html {
root /data/nginx/html/web1/errorpage/;
}
} #注意:
#limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
#第一个参数:,$binary_remote_addr表示通过这个标识来做限制,限制同一客户端ip地址,$binary_remote_addr变量适用于ipv4地址。
#第二个参数:zone=reqone:10m表示生成一个大小为10M,名为req_one的内存区域,用来存储访问的频次信息。
#第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次 #limit_req zone=req_one burst=2 nodelay;
#第一个参数:zone=req_one设置使用哪个配置区域来做限制,与上面Limit_req_zone 里的name对应
#第二个参数:burst=2,设置一个大小为2的缓冲区,当有大量请求过来时,超过了访问频次限制的请求可以先放到这个缓冲区内。
#第三个参数:nodelay,超过访问频次并且缓冲区也满了的时候,则会返回503,如果没有设置,则所有请求会等待排队 #2.重启nginx服务
[root@nginx01 web1]# systemctl reload nginx.service #3.客户端进行测试,发现超过3个请求后后续的请求都返回503,503被重定向到自定义的错误页中。
[root@xuzhichao ~]# for i in {1..10} ;do curl http://www.nginx01.com/;done
www.nginx01.com
www.nginx01.com
www.nginx01.com
our system is being maintained
our system is being maintained
our system is being maintained
our system is being maintained
our system is being maintained
our system is being maintained
our system is being maintained
2.3 限制客户端同一时刻的并发连接数
limit_conn_zone key zone=name:size;
Default: —
Context: http
limit_conn zone number;
Default: —
Context: http, server, location
语法和limit_req_zone key zone=name:size相似。
场景示例:设置共享内存区域和单个IP最大的允许的并发连接数为2,超过限制时,返回503错误。
[root@nginx01 web1]# cat /etc/nginx/conf.d/virtualhost.conf
limit_conn_zone $binary_remote_addr zone=conn_one:10m; server {
listen 80;
server_name www.nginx01.com; limit_conn conn_one 2;
charset utf-8,gbk; location / {
root /data/nginx/html/web1;
index index.html;
} error_page 500 502 503 504 404 /errorpage.html;
location = /errorpage.html {
root /data/nginx/html/web1/errorpage/;
}
}
WEB服务与NGINX(9)-NGINX作为下载服务器的相关配置的更多相关文章
- flask在centos下搭建web服务【uwsgi,nginx】
centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...
- Web服务图片压缩,nginx+lua生成缩略图
背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...
- 数据连接到 Web 服务 InfoPath 2010 窗体中的 SharePoint 服务器上运行时的错误消息:"401-未经授权"解决方案
症状: 请考虑以下情形: Web 窗体发布到 SharePoint 服务器. 您创建 Microsoft InfoPath 2010 表单所在的 SharePoint 服务器上使用到位于数据的数据连接 ...
- 微信公众号开发之被逼学web服务端1-----使用SecureCRT连接Linux服务器
做Android的进新公司后安排做微信公众号开发,这基本是后台和前端的活都要由小白的我来做,这两天基本成鸭子了,被填的满满的,却还是不够,博文仅作记录,希望能给后来的小白一点参考吧 今天做的是如何配置 ...
- web服务-3、epoll高效率实现并发服务器
知识点: 之前写的四种方法实现并发服务效率都还是低,早期的服务器采用的是select和poll方式,select这种方式的特点是轮询所有套接字去一个个看有没有事件发生,但是装套接字的列表长度是有限制的 ...
- mongodb数据库下载链接,相关配置(转载),官方api
下载链接:http://dl.mongodb.org/dl/win32/x86_64 配置:http://blog.sina.com.cn/s/blog_685213e70101g81t.html 官 ...
- svn + nginx unit + python3自动化发布web服务方法
本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...
- nginx(二)nginx的安装
下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...
- 上传文件服务与web服务分离
业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...
- web服务的简单介绍及apache服务的安装
一,web服务的作用: 是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览: 可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...
随机推荐
- ABC326 A-F
vp on 2023.11.12 A.B:略. C:双指针或者二分. D:暴搜+剪枝,每一行的计算量最多是 $60$. E:期望相关.计算每个点的概率,乘上这个点的权值,并求和即可. F:meet i ...
- IDEA MyBatis Log 插件,打印SQL语句
打开Settings->plugins 搜索插件 MyBatis Log点击安装,完成后重启IDEA即可. 点击Tools,选择 MyBatis Log Plugin ,会在下方打开一个窗口,这 ...
- IntelliJ IDEA集成本地Maven步骤
IntelliJ IDEA集成本地Maven步骤 一.前期准备 Maven已经在本地环境配置完成,步骤可以参考我的这篇文章: https://www.cnblogs.com/rainbow-1/p/1 ...
- 实用 Linux 命令 Windos 命令 实例演示 持续更新中
实用 Linux 命令 Windos 命令 实例演示 持续更新中 目录 实用 Linux 命令 Windos 命令 实例演示 持续更新中 Linux 命令 [Command [options] [lo ...
- Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
概述 本文探讨 Wails 框架的使用,从搭建环境到开发,再到最终的构建打包,本项目源码 GitHub 地址:https://github.com/mazeyqian/go-run-wechat-de ...
- MyBatis ognl.NoSuchPropertyException
描述 SpringBoot + Mybatis-plus 项目,运行时出现如下错误: ognl.NoSuchPropertyException:没有对应属性异常 Invalid bound state ...
- 《深入理解Java虚拟机》读书笔记:运行时栈帧结构
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 一.概述 在Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统 ...
- spark 异常值过滤 IQR
def getIQR(df:DataFrame,colName:String):Array[Double]={ val tmpDf = df.withColumn(colName, col(colNa ...
- CentOS上搭建FTP服务器[未测试]
centos ftp服务器 linux service upload 防火墙 本文参考了网上的几篇博文,在CentOS上搭建FTP服务器,两种搭建方式:gssftp与vsftpd. RedHat和Ce ...
- 豪鹫闲谈:IBM x3650 m4服务器安装centos6.4系统
豪鹫闲谈:IBM x3650 m4服务器安装centos6.4系统 2013-08-25 11:46:29 标签: IBM x3650 centos6.4 原创作品,允许转载,转载时请务必以超链接 ...