故障描述:在nginx、apache、lighttpd环境下,上传大附件50m以上附件出现下载时502、500等错误,附件无法下载。
适用版本:Discuz!x2-x3.1
解决流程:
1.打开论坛的配置文件config/config_global.php ,
找到以下代码:
- $_config['download']['xsendfile']['type'] =0;
复制代码
修改成
- $_config['download']['xsendfile']['type'] =1;
复制代码
启用 X-Sendfile 功能0=close 1=nginx 2=lighttpd 3=apache
2.找到
- $_config['download']['xsendfile']['dir'] = '/down/';
复制代码
修改成
- $_config['download']['xsendfile']['dir'] = '/data/attachment/forum/';
复制代码
3.保存文件,后台更新缓存。
备注:什么是 X-Sendfile?
X-Sendfile 是一种将文件下载请求由后端应用转交给前端 web 服务器处理的机制,它可以消除后端程序既要读文件又要处理发送的压力,从而显著提高服务器效率,特别是处理大文件下载的情形下。
X-Sendfile 通过一个特定的 HTTP header 来实现:在 X-Sendfile 头中指定一个文件的地址来通告前端 web 服务器。当 web 服务器检测到后端发送的这个 header 后,它将忽略后端的其他输出,而使用自身的组件(包括 缓存头 和 断点重连 等优化)机制将文件发送给用户。
本教程由无限星辰工作室独家撰写提供,转载请注明出处,谢谢. |