Java及nginx实现文件权限控制代码实例
作者:zhjh256 发布时间:2022-05-01 02:48:18
标签:Java,nginx,文件,权限,控制
我们知道,使用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


猜你喜欢
- 这篇文章主要介绍了JavaWeb如何实现禁用浏览器缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 今天给大家分享纯注解版spring与mybatis的整合mybatis包下:有这几个,上面图片没有展开配置Bean:MyBatisAutoC
- Android 两个Fragment之间如何传递数据FragmentA启动FragmentB,做一些选择操作后,返回Fragme
- 一. 接口文档概述swagger是当下比较流行的实时接口文文档生成工具。接口文档是当前前后端分离项目中必不可少的工具,在前后端开发之前,后端
- 本文介绍了详解WMI RPC 服务器不可用的解决方案,分享给大家,具体如下:ConnectionOptions connectionOpti
- 目录1、什么是Java的内存模型2、为什么需要Java内存模型3、Java内存模型及操作规范4、Java内存模型规定的原子操作5、Java内
- 使用AOP的原因(AOP简介)我们知道,spring两大核心,IOC(控制反转)和AOP(切面),那为什么要使用AOP,AOP是什么呢,严格
- 本文实例为大家分享了Android实现读写USB串口数据的具体代码,供大家参考,具体内容如下最近在研究USB方面的内容;先后做了关于Andr
- ArrayList实现班级信息管理系统,供大家参考,具体内容如下代码如下:import java.util.*;public class D
- 用TabHost 来实现顶部选项卡,上代码:activity_main.xml<?xml version="1.0"
- 前言: 在命令行中输入可以输入各类参数,本文将针对这些参数做一个小结。基于命令行输入参数测试程序如下:import java.util.Ar
- PPT中的动画效果可分为已有内置动画以及自定义动画。设置内置动画,只需直接指定动画效果类型即可。本文主要介绍如何实现自定义动画,即自定义形状
- 一.算法效率算法效率分析分为两种:时间效率、空间效率。其中时间效率被称为时间复杂度,空间效率被称为空间复杂度。时间复杂度主要衡量的是一个算法
- 一、流程图二、Token1、token是一种客户端认证机制,是一个经过加密的字符串,安全性强,支持跨域2、用户第一次登录,服务器通过数据库校
- 一、前言我们在做Winform窗体程序开发的时候,会经常遇到窗体之间相互传值。假设有下面的一个场景:一个主窗体和一个子窗体,点击主窗体上面的
- 本文实例讲述了Android编程实现等比例显示图片的方法。分享给大家供大家参考,具体如下:在android中,由于密度的影响,如果想得到图片
- mybatis初始化SqlSessionFactory失败总结原因有几点1.resources中的xml配置文件放错位置或者是放的太深加载不
- 相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天给大家分享我个人总结的一些加密算法:常见的加密方式分为可逆和不可逆两种
- 本文实例为大家分享了Android实现秒表功能的具体代码,供大家参考,具体内容如下设计完成一个秒表,具备启停功能,正确使用工作线程完成界面刷
- Example官方介绍Query by Example (QBE) is a user-friendly querying techniqu