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有三种限速场景:

  1. 下载限速:限制用户的下载速度,使用Nginx ngx_http_core_module模块实现
  2. 请求限制:限制用户单位时间内所产生的http连接数,使用Nginx ngx_http_limit_req_module实现
  3. 连接限制:限制同一时间的连接数,以及并发连接数的限制,使用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作为下载服务器的相关配置的更多相关文章

  1. flask在centos下搭建web服务【uwsgi,nginx】

    centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...

  2. Web服务图片压缩,nginx+lua生成缩略图

    背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...

  3. 数据连接到 Web 服务 InfoPath 2010 窗体中的 SharePoint 服务器上运行时的错误消息:"401-未经授权"解决方案

    症状: 请考虑以下情形: Web 窗体发布到 SharePoint 服务器. 您创建 Microsoft InfoPath 2010 表单所在的 SharePoint 服务器上使用到位于数据的数据连接 ...

  4. 微信公众号开发之被逼学web服务端1-----使用SecureCRT连接Linux服务器

    做Android的进新公司后安排做微信公众号开发,这基本是后台和前端的活都要由小白的我来做,这两天基本成鸭子了,被填的满满的,却还是不够,博文仅作记录,希望能给后来的小白一点参考吧 今天做的是如何配置 ...

  5. web服务-3、epoll高效率实现并发服务器

    知识点: 之前写的四种方法实现并发服务效率都还是低,早期的服务器采用的是select和poll方式,select这种方式的特点是轮询所有套接字去一个个看有没有事件发生,但是装套接字的列表长度是有限制的 ...

  6. mongodb数据库下载链接,相关配置(转载),官方api

    下载链接:http://dl.mongodb.org/dl/win32/x86_64 配置:http://blog.sina.com.cn/s/blog_685213e70101g81t.html 官 ...

  7. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  8. nginx(二)nginx的安装

    下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...

  9. 上传文件服务与web服务分离

    业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...

  10. web服务的简单介绍及apache服务的安装

    一,web服务的作用:  是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览:   可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...

随机推荐

  1. 什么是OOP(Object Oriented Programming)面向对象编程

    1.认识面向对象首先要认识面向过程 面向过程编程,举个例子 比如有一天你要吃回锅肉,你会先去准备食材,然后一步一步把这道菜做出来,这就是面向过程. 还有一种方式你依然可以得到这道菜,你可以去饭店直接点 ...

  2. #搜索,计算几何#JZOJ 4016 圈地为王

    题目 在\(n\)行\(m\)列的网格中,你要圈一些地. 你从左上角出发,最后返回左上角,路径内部的区域视为被你圈住. 你不可以进入网格内部, 只能在边上行走. 你的路径不能在左上角以外自交, 但是边 ...

  3. #线段树,离散#nssl 1476 联

    分析 由于下标过大,考虑离散,不仅仅是区间左右端点 假设只有一个区间从1到\(x\),那么修改后答案应该是\(x+1\) 所以说还要记录右端点+1的位置,你以为这就能A了吗 为了避免标记被覆盖,无论是 ...

  4. #树链剖分,LCA#洛谷 3398 仓鼠找sugar

    题目 多次询问求树上的两条路径是否有公共点 分析 有公共点当且仅当一条路径的LCA在另一条路径上, 否则一定会形成一个环,那树剖求LCA判断一下LCA是否在另一条路径上即可 代码 #include & ...

  5. 本周四晚19:00知识赋能第六期第5课丨OpenHarmony WiFi子系统

    OpenAtom OpenHarmony(以下简称"OpenHarmony")开源开发者成长计划项目自 2021 年 10 月 24 日上线以来,在开发者中引发高度关注. 成长计划 ...

  6. 新手的登录qsnctfwp

    打开登录界面 按要求以普通用户 user 的身份,通过密码 password 登录 使用 BurpSuite 拦截登录情况 在获取(GET)登录结果页面时,修改 Cookie 中的 username ...

  7. BI、OLAP、多维分析、CUBE 这几个词是什么关系?

    这些词我们在建设分析型应用时经常会听到,这几个词也经常被弄混,这里来梳理一下. BIBI 是 Business Intelligence(商业智能)的缩写,是指企业利用已有数据进行数据分析从而指导商业 ...

  8. mysql 必知必会整理—数据汇总与分组[七]

    前言 简单整理一下数据汇总与分组 正文 我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数.使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成. 这种类型的检索例 ...

  9. CTFshow命令执行29-123

    命令执行 WEB29 eval是php中执行以PHP脚本执行的命令 PHP命令可以执行脚本命令 本题使用方法是先 system(cp f*.php 1.txt) 然后访问1.txt WEB30 在PH ...

  10. 使用EPLAN做项目的收获点

    收获点如下: 1.消息检查功能. 最具有代表性的EPLAN软件的辅助检查功能.通过自带检查可以发现设计的错误和警告. 2.导线表导出功能. 使用导入模版.宏设置,导出对应线号表. 此类接线通过一个导线 ...