OpenResty配置文件下载

初学openResty,从最简单,实用的的地方入手,一步步掌握openResty的配置以及开发。
现在我们从简单的入手,实现一个简单的文件下载功能。


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  localhost;
        
        location /download {
            alias /home/moon/openresty_workspace/download_test/download_dir;
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
        }
    }
}

我把下载文件放在/home/moon/openresty_workspace/download_test/download_dir
这个目录中,这个目录中可以包含子目录。
该目录结构是这样的

.
├── 2.txt
└── temp
    └── 1.txt

运行
cd到工作目录

openresty -p `pwd` -c conf/nginx.conf

-p 指定工作目录
-c 指定配置文件

reload 配置文件也要带上启动时的 -p -c

openresty -p `pwd` -c conf/nginx.conf -s reload

在这里插入图片描述
在这里插入图片描述
就这么简单。
总结一下:
1.nginx配置文件中的http模块:
sendfile on;
原因如下:

sendfile: 设置为on表示启动高效传输文件的模式。

sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。

如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。

2.在http模块的server的location设置autoindex on; 并设置下载路径,保证该下载路径存在。

location /download {
            alias /home/moon/openresty_workspace/download_test/download_dir;
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
        }

Module ngx_http_autoindex_module

另外:设置下载路径的设置有alias和root都可以,但二者有区别。

语法:
alias path;
说明:alias是用来设置文件资源路径的,与root的不同点在于如何解读location后面的uri参数,alias和root会以不同的方式将用户请求映射到真正的磁盘文件上。
例如,有一个请求的uri是/config/nging.conf,而实际文件是在/usr/local/nginx/conf /nginx.conf,那么可以用下面两种方式设置:
location /conf {
alias /usr/local/nginx/conf /;
}

location /conf {
root /usr/local/nginx
}

参考:
OpenResty 搭建文件服务器
Nginx --sendfile配置
Module ngx_http_autoindex_module
Module ngx_http_dav_module
Openresty学习(五):nginx作为文件服务器使用
openresty实现图片(文件)服务器
Nginx+Lua 搭建文件服务器
openresty(nginx) 配置 http与https使用同一个端口,禁止 IP 直接访问

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值