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