缘由:

“传统的Web服务器在处理文件下载的时候,总是先读入文件内容到应用程序内存,然后再把内存当中的内容发送给客户端浏览器。这种方式在应付当今大负载网站会消耗更多的服务器资源。sendfile是现代操作系统支持的一种高性能网络IO方式,操作系统内核的sendfile调用可以将文件内容直接推送到网卡的buffer当中,从而避免了Web服务器读写文件的开销,实现了“零拷贝”模式。 ”

附上传统的php做下载的处理方法,这种方法无疑还是将文件先读取到内存然后输出到客户的浏览器。

传统方法一:(最消耗内存){我曾经使用过这一种方法,文件大小8兆左右,同时500+人下载服务器负载直线飙升到20几直到宕机}

$file_fullpath =’/home/www/filepath/2011/12/31/abcd.zip’;

header(‘Content-type: application/octet-stream’);

@readfile($file_fullpath);

传统方法二:(降低内存消耗)

$file_fullpath =

‘/home/www/filepath/2011/12/31/abcd.zip’;

header(“Content-Type: application/octet-stream”);

$data = fopen($file_fullpath, ‘rb’);

while (!feof($data)) {

echo @fread($data, 8192);

flush();

ob_flush();

}

fclose($data);

本文将要使用的方法:

主要应用nginx的X-Accel-Redirect将文件直接交给nginx做处理从而减少服务器负载

网站在服务器上的根目录为:/home/www

文件的真实地址为

http://www.server110.com/filespath/2011/12/31/abcd.zip

下载地址为:http://www.server110.com/down.php?filepath=2011/12/31/abcd.zip&filename=abcd.zip

本文档实现效果为:

1、只有通过php的下载地址能够下载并且“零内存”消耗。

2、通过http://www.server110.com/filespath/2011/12/31/abcd.zip

真实的路径是不允许下载的。

3、在php里可以进行一写下载权限的处理。

nginx配置文档

location /down

{

internal;

alias /home/www/filespath;

}

/* 此段是为了防止直接通过地址访问文件而做,可以作为防盗链*/

location /filepath

{

internall;

}

php文件设置:

$filepath = ‘2011/12/31/abcd.zip’;

$filename = ‘abcd.zip’;

header(“Content-Disposition: attachment; filename= ‘{$filename}'”);

header(“Content-Type: application/octet-stream”);

header(‘X-Accel-Redirect: /down/’.{$filepath});

header(“X-Accel-Buffering: yes”);

header(“X-Accel-Limit-Rate :102400”); //速度限制 Byte/s

//header(“Accept-Ranges: none”);//单线程 限制多线程

在使用时候,必须要明白以下头信息是不能被Nginx更改的(即这些信息得由你来指定!)

Content-Type

Content-Disposition

Accept-Ranges

Set-Cookie

Cache-Control

Expires

如果其中的一些信息没有指定,那么重定向请求设置!

4.更多处理控制

你可以通过一下头信息来配置 X-Accel-Redirect 特性:

X-Accel-Limit-Rate: 1024

X-Accel-Buffering: yes|no

X-Accel-Charset: utf-8

ngixn+php+gd,nginx+php程序使用X-Accel-Redirect特性实现下载服务器的配置 - Nginx - 数安时代(GDCA)SSL证书官网...相关推荐

  1. php fpm 优化502,Nginx+PHP-FPM环境访问网站出现502错误的优化方法 - Nginx - 数安时代(GDCA)SSL证书官网...

    游戏后端代码采用Nginx+PHP-FPM的方式部署.放问游戏的时候偶尔会出现502错误. Nginx错误日志出现以下日志 2014/07/05 17:20:58 [error] 18431#0: * ...

  2. nginx与mysql传输过程_某互联网企业技术发展史(四)配置nginx和mysql兼容Yii框架,上传网站并调试成功...

    昨天安装好了php.nginx和squid,今天配置mysql和nginx,使nginx兼容Yii框架,并上传网站,将网站调试和配置好. 1, 首先配置下php的时区 # vi /etc/php.in ...

  3. windows配置nginx实现负载均衡集群

    windows配置nginx实现负载均衡集群 2014-08-20 09:44:40   来源:www.abcde.cn   评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是li ...

  4. 阿里云/腾讯云服务器上部署Nginx,域名,SSL证书

    你将会从这篇文章中学到: 在服务器上部署Nginx. 域名的购买. 添加域名,让域名解析到你的服务器上. 教你如何添加SSL证书. 在你的服务器上面配置Nginx,实现http和https的访问. 如 ...

  5. Nginx安装ssl模块和配置ssl证书

    ssl证书概要 SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书 [1] 就是遵守 SSL协议,由受信任的数字证书颁发机构 ...

  6. Nginx 配置ssl证书 windows

    最近在做小程序开发时,发现小程序发布到微信公众平台后,必须通过https + 域名的请求方式访问公网服务器(本地开发测试可直接用 本机ip或localhost 进行访问,在小程序开发工具中勾选不校验合 ...

  7. nginx SSL证书

    SSL证书 什么是SSL证书 SSL(Secure Sockets Layer)证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书 ...

  8. zabbix.php访问不了_zabbix_配置Nginx连接php

    配置Nginx连接php 一.Nginx连接php 1.准备测试php文件 站点创建 # mkdir -p /data/site/huotouyihao/ 存放Nginx日志 #mkdir -p /d ...

  9. 如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密

    本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Let's Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由.自动 ...

最新文章

  1. Measuring Similarity between Clusters (Clusters 之间相似度的测量)【未完待续】
  2. 服务器上安装n点虚拟主机,N点虚拟主机管理系统之①-运行N点
  3. Android 短信模块分析(四) MMS之短信的发送与接收
  4. 云端研发新基建:Serverless与持续架构服务落地实践
  5. Python-split()函数的使用
  6. Python 多线程7-线程通信
  7. 【Notification】屏蔽特定应用的通知提示
  8. 45本Hadoop、大数据方向书籍,包邮送到家!
  9. (转)用AGG实现高质量图形输出(四)
  10. 《自己动手写操作系统》(一)
  11. python镜像源地址
  12. 黄金矿工~java小游戏【内含源码】
  13. aps是什么意思_轿车里面的APS是什么意思 ?
  14. C语言BCC异或效验
  15. C++——不使用sqrt实现开根号
  16. 红外接收器的外围电路设计(方法+使用手册指引)
  17. hadoop 实现文件压缩
  18. 怎么知道自己的计算机成绩,小黑盒如何查看我的电脑 电脑查成绩方法
  19. XeLaTeX下LaTeX中文字体加粗解决方案
  20. Java写单机版五子棋

热门文章

  1. 奋斗吧,程序员——第四章 人生若只如初见,何事秋风悲画扇
  2. 下载钉钉直播回访视频
  3. 三体智能革命_作者签名书!同时送三体智能革命与机智:从数字化车间走向智能制造...
  4. 企业架构设计与详细设计
  5. 3.Vue 脚手架的使用
  6. Java 负数byte转int
  7. 亚马逊、谷歌、苹果云端宕机背后的故事
  8. 微信小程序-修改svg图标颜色
  9. uView时间格式化工具 在苹果手机上显示 NaN-NaN-NaN
  10. 大龄程序员的一次考研之旅