ngixn+php+gd,nginx+php程序使用X-Accel-Redirect特性实现下载服务器的配置 - Nginx - 数安时代(GDCA)SSL证书官网...
缘由:
“传统的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证书官网...相关推荐
- php fpm 优化502,Nginx+PHP-FPM环境访问网站出现502错误的优化方法 - Nginx - 数安时代(GDCA)SSL证书官网...
游戏后端代码采用Nginx+PHP-FPM的方式部署.放问游戏的时候偶尔会出现502错误. Nginx错误日志出现以下日志 2014/07/05 17:20:58 [error] 18431#0: * ...
- nginx与mysql传输过程_某互联网企业技术发展史(四)配置nginx和mysql兼容Yii框架,上传网站并调试成功...
昨天安装好了php.nginx和squid,今天配置mysql和nginx,使nginx兼容Yii框架,并上传网站,将网站调试和配置好. 1, 首先配置下php的时区 # vi /etc/php.in ...
- windows配置nginx实现负载均衡集群
windows配置nginx实现负载均衡集群 2014-08-20 09:44:40 来源:www.abcde.cn 评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是li ...
- 阿里云/腾讯云服务器上部署Nginx,域名,SSL证书
你将会从这篇文章中学到: 在服务器上部署Nginx. 域名的购买. 添加域名,让域名解析到你的服务器上. 教你如何添加SSL证书. 在你的服务器上面配置Nginx,实现http和https的访问. 如 ...
- Nginx安装ssl模块和配置ssl证书
ssl证书概要 SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书 [1] 就是遵守 SSL协议,由受信任的数字证书颁发机构 ...
- Nginx 配置ssl证书 windows
最近在做小程序开发时,发现小程序发布到微信公众平台后,必须通过https + 域名的请求方式访问公网服务器(本地开发测试可直接用 本机ip或localhost 进行访问,在小程序开发工具中勾选不校验合 ...
- nginx SSL证书
SSL证书 什么是SSL证书 SSL(Secure Sockets Layer)证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书 ...
- zabbix.php访问不了_zabbix_配置Nginx连接php
配置Nginx连接php 一.Nginx连接php 1.准备测试php文件 站点创建 # mkdir -p /data/site/huotouyihao/ 存放Nginx日志 #mkdir -p /d ...
- 如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密
本文首发:开发指南:如何在 CentOS 7 上安装 Nginx Let's Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由.自动 ...
最新文章
- Measuring Similarity between Clusters (Clusters 之间相似度的测量)【未完待续】
- 服务器上安装n点虚拟主机,N点虚拟主机管理系统之①-运行N点
- Android 短信模块分析(四) MMS之短信的发送与接收
- 云端研发新基建:Serverless与持续架构服务落地实践
- Python-split()函数的使用
- Python 多线程7-线程通信
- 【Notification】屏蔽特定应用的通知提示
- 45本Hadoop、大数据方向书籍,包邮送到家!
- (转)用AGG实现高质量图形输出(四)
- 《自己动手写操作系统》(一)
- python镜像源地址
- 黄金矿工~java小游戏【内含源码】
- aps是什么意思_轿车里面的APS是什么意思 ?
- C语言BCC异或效验
- C++——不使用sqrt实现开根号
- 红外接收器的外围电路设计(方法+使用手册指引)
- hadoop 实现文件压缩
- 怎么知道自己的计算机成绩,小黑盒如何查看我的电脑 电脑查成绩方法
- XeLaTeX下LaTeX中文字体加粗解决方案
- Java写单机版五子棋