接前篇blog《nginx搭建文件服务器获取上传进度》,这篇blog主要讲文件下载。如果下载不需要权限控制, 那么就简单了,直接用nginx提供静态文件下载就可以了,可是大部分场景是需要权限判断的。后台准备用tornado框架来实现。

这样做意味着我们的程序需要将文件内容从磁盘经过一个固定的 buffer 去循环读取到内存,再发送给前端 nginx 服务器,最后才到达用户。当需要下载的文件很大的时候,这种方式将消耗大量内存。理想的解决方案应该是由 tornado 进行权限控制,通过后让前台的 nginx服务器直接将文件发送给用户 因为像nginx 这样的前台更善于处理静态文件。这样一来tornado就不会被 I/O 阻塞了。幸运的是主流的web 服务器就实现了X-Sendfile机制。

1、什么是X-Sendfile?

X-Sendfile 是一种将文件下载请求由后端应用转交给前端 web 服务器处理的机制,它可以消除后端程序既要读文件又要处理发送的压力,从而显著提高服务器效率,特别是处理大文件下载的情形下。

X-Sendfile 通过一个特定的 HTTP header 来实现:在 X-Sendfile 头中指定一个文件的地址来通告前端 web 服务器。当 web 服务器检测到后端发送的这个 header 后,它将忽略后端的其他输出,而使用自身的组件(包括 缓存头 和 断点重连 等优化)机制将文件发送给用户。

不过,在使用 X-Sendfile 之前,我们必须明白这并不是一个标准特性,在默认情况下它是被大多数 web 服务器禁用的。而不同的 web 服务器的实现也不一样,包括规定了不同的 X-Sendfile 头格式。如果配置失当,用户可能下载到 0 字节的文件。

使用 X-Sendfile 将允许下载非 web 目录中的文件(例如/root/),即使文件在 .htaccess 保护下禁止访问,也会被下载。

2、nginx配置

nginx默认支持X-Sendfile机制,不需要额外安装模块。

参考地址:

http://blog.itpub.net/27043155/viewspace-734233/

https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/

我的nginx配置如下:

internal 表示这个路径只能在 Nginx 内部访问,不能用浏览器直接访问防止未授权的下载。

3、tornado

需要发送的HTTP 头为 X-Accel-Redirect,注意不同的web服务器是有区别的。

nginx搭建文件服务器相关推荐

  1. linux中使用Vsftpd+nginx 搭建文件服务器

    目录标题 搭建文件服务器 1.安装 vsftpd 2.给文件服务器添加一个用户 3.设置开机自启动 vsftpd常用操作命令 安装Nginx 搭建文件服务器 1.安装 vsftpd yum -y in ...

  2. Nginx搭建文件服务器实现文件上传

    Nginx搭建文件服务器实现文件上传 安装Nginx 去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本 上传nginx到linux系统 安装依赖环境 (1)安装gcc环 ...

  3. 使用Nginx搭建文件服务器

    文章目录 1.配置文件 2.启动Nginx 之前已经出了Nginx搭建和配置的文章,所以不再赘述,如有不会搭建看下面链接: Nginx的安装配置教程 Nginx配置文件详解 下面直接开始使用Nginx ...

  4. Nginx 搭建文件服务器

    Nginx 做文件服务器(云服务器与域名) 需要 数量 域名 1个 云服务器 1台 确认好域名正确解析至服务器 ip 可通过 ping 命令测试 虽说是需要云服务器与域名,其实本地的服务器也行 做一个 ...

  5. nginx搭建文件服务器脚本,基于docker搭建nginx文件服务器的方法步骤

    1.在本机新建配置文件docker_nginx.conf server { listen 7070; server_name localhost; charset utf-8; location /f ...

  6. Nginx搭文件服务器,使用nginx搭建文件服务器

    前言 今天又折腾了一下,将网站里的js.css和img都提出去了,又弄了一个单独的文件服务器(nginx),用来存放这些静态文件. 目的是啥?cdn类似吧. 一:启用新二级域名访问静态文件# 进入到n ...

  7. 利用Nginx搭建文件服务器

    一.背景 工作过程中有时候许多大的镜像或者安装包等文件存储本地电脑太占空间并且下载不方便,不如搭建一个nginx文件服务器来存储文件,wget下载 二.操作步骤 1.下载安装包并安装nginx 官网地 ...

  8. Nginx搭建文件服务器以及文件在线预览和强制下载

    文件服务 直接查看server块配置 server {listen 1234;server_name 127.0.0.1;charset utf-8; # 避免中文乱码 location / {roo ...

  9. Linux nginx搭建文件服务器

    最主要是这三项配置: autoindex on;# 显示目录 autoindex_exact_size on;# 显示文件大小 autoindex_localtime on;# 显示文件时间 auto ...

  10. nginx搭建文件服务器脚本,nginx搭建web服务器,配置端口复用

    1.文件安装目录说明Nginx安装目录为/usr/local/nginx Nginx主配置文件目录为/usr/local/nginx/conf/nginx.conf https密钥key存放目录/us ...

最新文章

  1. C面向对象之透明指针的运用
  2. F# ≥ C# (Record)
  3. python os.path模块学习(转)
  4. pybind opencv mat
  5. python做方差分析和卡方检验
  6. 07-图4. Saving James Bond - Hard Version (30)
  7. Zend_Feed 的项目实际应用
  8. HTML用css让input无法使用,html – 是否可以使用CSS设置一个禁用的INPUT元素?
  9. 精选| 2021年5月R新包推荐(第54期)
  10. 线性代数【5】矩阵和矩阵运算
  11. 3d游戏编程大师技巧 源代码_C/C++编程入门基础系列:俄罗斯方块小游戏制作,直接源代码分享...
  12. 如何高效地使用51单片机串口输入输出
  13. Appium appium android 6.0+ 微信 @driver.available_contexts 返回 webview_undefined 问题
  14. 做了3年单片机工程师,如果工资还是3-5千,那你就看过来
  15. PPT修行之路(二)-素材库
  16. 在FPGA开发板上玩《超级玛丽》之笔记 -(2)重构2A03CPU
  17. ASCII 控制码说明
  18. 学习尚硅谷Nginx整理的笔记
  19. VC2012/VS2012 MFC串口通讯上位机程序教程笔记(转)
  20. 李航《统计学习方法》AdaBoost算法(课后习题)

热门文章

  1. Vbs调用MsAgent组件,很有趣
  2. python网络爬虫课程设计报告摘要_网络爬虫课程设计报告
  3. Struts2中的Actionsupport类
  4. linux安装搜狗错误,centos安装sogou出错
  5. 《Android框架揭秘》——2.4节开发Android应用程序
  6. 官方原版Windows XP SP3(VOL)简体中文版ISO下载
  7. php仿小红书,vue仿小红书个人开源项目
  8. 博弈论(取石子专题)
  9. DNS和VIP的区别
  10. 科学计算机算度数,计算器问题科学计算器有分角度制和弧度制,身 – 手机爱问...