Nginx系列之 一 搭建文件共享服务器

Nginx系列之 一 搭建文件共享服务器_第1张图片

目录

一、概述

二、实现

三、Nginx的限速

3.1 并发限制

3.2 速度限制


Nginx系列之 一 入门安装_开着拖拉机回家的博客-CSDN博客

Nginx系列之 一 反向代理_开着拖拉机回家的博客-CSDN博客

Nginx系列之 一 负载均衡_开着拖拉机回家的博客-CSDN博客


一、概述


Nginx一个高性能 Web服务器,可以用作反向代理,也可以实现负载平衡和 HTTP缓存。Nginx是一款免费的开源软件,根据类BSD许可证的条款发布。大部分 Web服务器通常使用 NGINX 作为负载均衡器。

Nginx系列之 一 搭建文件共享服务器_第2张图片

需求: 项目私有化部署HDP集群和应用程序,Linux服务器不能直接上传和下载文件,同一个局域网中在windows上面安装Nginx,使用nginx搭建一个简单的文件共享服务器,使用wget进行大文件下载。


二、实现


配置Nginx

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $http_host '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  www.kangll.com;

        # 避免中文乱码
        charset utf-8;
         
        location / {
            alias       /opt/softs/;
            sendfile    on;
            autoindex   on;
            autoindex_exact_size  off;
            autoindex_localtime   on;
        }

    }

}

参数详解:

  • sendfile

启用sendfile()系统调用来替换read()和write()调用,减少系统上下文切换从而提高性能,当 nginx 是静态文件服务器时,能极大提高nginx的性能表现,而当 nginx 是反向代理服务器时,则没什么用了

  • autoindex on

启用目录浏览虚拟主机的配置文件

  • autoindex_exact_size off

默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB

  • autoindex_localtime on

默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间

通过 www.kangll.com 访问

Nginx系列之 一 搭建文件共享服务器_第3张图片

在 其他的 Linux服务器上 下载


三、Nginx的限速


3.1 并发限制


可以通过ngx_http_limit_conn_module和ngx_http_limit_req_module模块来实现限速的功能, 该模块主要限制下载速度。

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $http_host '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
   
    limit_conn_zone $binary_remote_addr zone=aming:10m;

    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        server_name  www.kangll.com;
        limit_conn aming 10;
        
         
        location / {
            alias       /opt/softs/;
            sendfile    on;
            autoindex   on;
            autoindex_exact_size  off;
            autoindex_localtime   on;
        }

    }

}

说明:首先用limit_conn_zone定义了一个内存区块索引aming,大小为10m,它以$binary_remote_addr作为key。该配置只能在http里面配置,不支持在server里配置。

limit_conn 定义针对aming这个zone,并发连接为10个。在这需要注意一下,这个10指的是单个IP的并发最多为10个。

limit_conn 为 10 ,下载文件:

Nginx系列之 一 搭建文件共享服务器_第4张图片

limit_conn 修改为 5 ,下载速度降下来一点

Nginx系列之 一 搭建文件共享服务器_第5张图片

3.2 速度限制


nginx_http_limit-req_module: 该模块用来限制请求数。

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $http_host '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
   
    limit_conn_zone $binary_remote_addr zone=aming:10m;

    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        server_name  www.kangll.com;
        limit_conn aming 5;
        
         
        location / {
            alias       /opt/softs/;
            sendfile    on;
            autoindex   on;
            autoindex_exact_size  off;
            autoindex_localtime   on;
            limit_rate_after 30m;
            limit_rate 1024k;
        }

    }

}

说明:limit_rate_after定义当一个文件下载到指定大小(本例中为30M)之后开始限速;

limit_rate 定义下载速度为1024k/s。

测试:

Nginx系列之 一 搭建文件共享服务器_第6张图片

你可能感兴趣的:(Linux,nginx,limit_rate,autoindex,sendfile,文件共享)