Nginx 设置 X-Accel-Redirect 控制文件下载
2018-12-15 13:35:28
955 次阅读
0 个评论
自己开发的项目有下载的功能,刚开始的时候由于用户少,利用后台程序判断是否有下载权限,然后用流的方式输出到客户端。但是,随着用户的增加这种方式给服务器带来了压力。随后,想把下载的任务交给web 服务器来控制,但是这样又遇到了问题,我们怎样来控制它的下载权限呢?在网上找到了关于 nginx 利用 X-Accel-Redirect header 来控制文件下载权限。自己也做了实验。
操作步骤:
1. 安装 nginx 服务器
下载 nginx-1.0.10.tar.gz
2. nginx 中下载控制相关配置
根据下载的URI 配置 location 把可以下载 URI 设置成 "internal" 这样浏览器是不能直接访问的,我们只信任后台返回的 "X-Accel-Redirect",这样也就避免了客户端造 "X-Accel-Redirect" 下载文件情况,具体配置如下:
3. 后台程序控制 X-Accel-Redirect
在 getDownFile.jsp 中 代码
用户下载 http://down.xxx.com/save/zip/xxxxx.zip 文件
它会首先访问 http://down.xxx.com web服务器 符合"/save/zip/" location
会跳到后台服务器的 getDownFile.jsp 中,然看程序判断其是否可以下载
若可以下载设置 response.setHeader("X-Accel-Redirect",filePath);
若不可以下载就不用设置 X-Accel-Redirect
nginx 利用 X-Accel-Redirect response header 控制文件下载
00
相关话题
- 基于Nginx XSendfile+SpringMVC进行文件下载
- Spring MVC 文件下载
- SpringBoot设置上传文件大小
- Nginx支持字体文件
- nginx 多组件安装及secure_link配置与文件下载防盗链的使用
- Spring下载地址
- Apache的commons-net实现FTP的文件上传下载
- 解决IE浏览器不支持Spring MVC 文件下载的问题
- Nginx 上传文件出现413 Request Entity Too Large错误
- CentOS设置时间和时区
- Fabric.js画布设置
- Fabric.js进阶自订控制项
- Docker的MySQL官方镜像设置时区
- 解决spring mvc 返回json对象时ie浏览器访问会出现下载文件弹出框
- 32位JDK能设置最大的内存