我们知道,使用nginx作为文件下载服务器,可以极大地降低对后端Java服务器的负载冲击,但是nginx本身并不提供授权控制,因此好的方案是由后端服务器实现权限控制,最好的方式是直接复用应用的认证体系,最大化的降低成本。因此,可借助http的"X-Accel-Redirect"头实现该特性。具体如下:

location /bookres/ {

#禁止浏览器直接访问

internal;

limit_rate 200k;

alias d:/test/bookres/;

#转由后台处理(tomcat等web容器)

error_page 404 =200 @backend;

}

location @backend {

rewrite ^/bookres/(.*)/(.*)/(.*)/(.*)$ /bookres/?isbn=$1&restype=$2&resid=$3&type=$4 break;

proxy_pass http://localhost:8081; #tomcat等web容器

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

break;

}

java后台代码如下:

httpResponse.setHeader("Content-Disposition",

"attachment; filename=\""+filename+"\"");

httpResponse.setHeader("Content-Type",

"application/octet-stream");

httpResponse.setHeader("X-Accel-Redirect",

"/bookres/"+resource.get("res_url"));

//给nginx返回实际文件存在的地址

相比采用其他文件服务器方案如ftp/fastdfs/mongodb而言,该方案明显轻量非常多。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java nginx 例子_Java及nginx实现文件权限控制代码实例相关推荐

  1. cpu java poi 导出_java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通 ...

  2. java自动生成生成java透视表_java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通 ...

  3. java excel 透视_java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通 ...

  4. java 双向链表例子_Java双向链表按照顺序添加节点的方法实例_Java_软件编程

    分析过程: 首先需要比较待添加的节点编号与已有的节点编号的大小,若待添加的节点编号已经存在,则不能加入.为防止出现空指针的情况,需要对节点的位置进行判断. 示例代码: package linkedli ...

  5. java实现分发_关于JAVA中事件分发和监听机制实现的代码实例

    [实例简介] 关于JAVA中事件分发和监听机制实现的代码实例,绝对实用代码,有说明. [实例截图] [核心代码] JavaEventDispatch ├── bin │   └── com │   └ ...

  6. Linux 常用C函数说明-文件权限控制篇

    chdir(改变当前的工作(目录) 相关函数  getcwd,chroot 表头文件  #include<unistd.h> 定义函数  int chdir(const char * pa ...

  7. python怎么读取csv文件-python3读取csv文件任意行列代码实例

    这篇文章主要介绍了python3读取csv文件任意行列代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 读取每一行 reader = csv. ...

  8. 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

    转载:http://blog.csdn.net/5iasp/article/details/37054171 谢谢博主 ======================================== ...

  9. java代码实现解压文件_Java压缩/解压文件的实现代码

    用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; impo ...

最新文章

  1. 实战项目:考勤系统的需求分析
  2. [Bzoj4196] [NOI2015] 软件包管理器 [树链剖分,线段树]
  3. HDU4382(特殊的矩阵连乘)
  4. 服务器:Nginx - 最小配置说明
  5. powercfg -h off_驭鲛记的主演会是谁?肖战关系特别好的艺人朋友呢?白敬亭和吴映洁有没有故事啊?高伟光是不是隐婚生子了?讲讲管h和马司令呗?...
  6. ToString截取字符串的用法
  7. python和c 的区别-对比平台--C和Python之间的区别
  8. 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示,,,
  9. 大数据时代的数据挖掘是怎么做的?
  10. 《算法导论3rd第十二章》二叉查找树
  11. 为什么提问能力很重要?
  12. 看完这篇,轻松解决FastReport合并单元格!
  13. 使用java + selenium + OpenCV破解腾讯防水墙滑动验证码
  14. 安卓中关于图片的类型
  15. Statistics 基础之Hypothesis Tests1---t检验
  16. 使用公众号快速申请小程序的流程
  17. MCAL中DIO的配置
  18. 用python成为一名顶级黑客
  19. KDZD606绝缘服试验装置
  20. 通过python 构建一个简单的聊天服务器

热门文章

  1. C#的特性Attribute
  2. 深入学习Redis(4):哨兵
  3. Shadow Brokers 公布 2.1 万美元的 0day 订阅服务
  4. 定位排查工作流的计算结果数据量不符合预期的方法
  5. 如何在eclipse中装myeclipse的插件
  6. 【017】◀▶ C#学习(九) - ADO.NET
  7. C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]
  8. c++运行不出结果_fastjson 不出网利用总结
  9. 分布与并行计算—日志挖掘(Java)
  10. leetcode 239. 滑动窗口最大值(单调队列)