Java及nginx实现文件权限控制代码实例

作者:zhjh256 时间:2022-05-01 02:48:18 

我们知道,使用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而言,该方案明显轻量非常多。

来源:https://www.cnblogs.com/zhjh256/p/13111229.html

标签:Java,nginx,文件,权限,控制
0
投稿

猜你喜欢

  • Java如何实现登录token令牌

    2022-05-19 16:58:11
  • java开发RocketMQ消息中间件原理基础详解

    2023-10-01 21:04:49
  • java实现科研信息管理系统

    2022-05-13 02:49:41
  • 使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出详解

    2023-07-18 18:15:14
  • 新手入门Jvm-- JVM对象创建与内存分配机制

    2021-11-04 19:28:10
  • 使用Springboot+poi上传并处理百万级数据EXCEL

    2021-12-18 17:38:28
  • java中JVM中如何存取数据和相关信息详解

    2023-08-10 03:49:46
  • android studio3.0.1无法启动Gradle守护进程的解决方法

    2022-05-03 01:06:28
  • Android实现简单卡片布局

    2023-05-22 11:43:37
  • Java Grpc实例创建负载均衡详解

    2022-03-07 17:50:15
  • Android日期选择器实现年月日三级联动

    2022-12-13 03:35:59
  • MyBatis 动态SQL和缓存机制实例详解

    2022-01-14 16:47:33
  • Windows系统中使用C#编写蓝牙通信程序的简单实例

    2022-03-02 00:12:10
  • 基于Java汇总Spock框架Mock静态资源经验

    2023-11-25 04:42:29
  • c++中的string常用函数用法总结

    2023-11-02 16:44:02
  • Spring注解@DependsOn解析

    2022-01-11 08:20:35
  • C#使用GUID(全局统一标识符)

    2022-08-23 10:25:25
  • C# double和decimal数据类型以截断的方式保留指定的小数位数

    2021-12-09 02:19:04
  • 如何完成spring的最小化XML配置

    2022-02-12 11:33:58
  • Java实现InputStream的任意拷贝方式

    2022-04-08 10:11:32
  • asp之家 软件编程 m.aspxhome.com