首页 > 系统相关 >nginx配置下载服务器(具备权限验证)

nginx配置下载服务器(具备权限验证)

时间:2024-08-17 23:08:34浏览次数:9  
标签:192.168 fileName nginx location 服务器 权限 response 下载

大多数场景中,下载可以使用nginx直接代理,但缺少权限验证,下述方式下载通过后端校验,成功后转发请求nginx进行下载操作。

前端代码:

window.location.href = "http://192.168.80.128:8080/download_file?fileName=8042200341080001_01.zip";

直接打开访问指定的下载文件路径(我是用请求时必须携带token才能访问后端,否则进不了后端,就谈不上下载了),之后验证是否有该文件,有则进行下载操作。

后端代码:

    @RequestMapping(value = "/download", method = RequestMethod.GET)
    public void doDownloadOffline(String fileName, HttpServletResponse response) throws IOException {
        log.info("进入下载20240817:{}", fileName);
        if (fileName != null ) {
            File zipFile = new File("/Data/data/" + fileName);
            if (!zipFile.exists()) {
                response.sendError(404);
            }
            response.setHeader("Content-Type", "application/octet-stream");
            // 设置转发属性
            response.setHeader("X-Accel-Redirect", "/downloadFile/" + zipFile.getName());
            response.setHeader("X-Accel-Charset", "utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + zipFile.getName());
            log.info(response.toString());
        } else {
            System.out.println("error");
        }
    }

其中“/Data/data/”是服务器上文件所在目录,当文件真实存在时,重定向到“/downloadFile/”+ 文件名进行下载。

nginx配置:

server {
       listen 8080;
       server_name 192.168.80.128;
       
       location / {
          root /home/java/blog/web/dist/;
          index index.html index.htm;
            try_files $uri $uri/ /index.html;
       }
       
       location /api/ {
           proxy_pass http://192.168.80.128:8888/;
       }
       
       location = /download_file {
           proxy_pass http://192.168.80.128:8888/download;
        }
        location /downloadFile/ {
            #设置非浏览器访问
            internal;
            charset utf-8;
            alias /Data/data/;
        }
    }

前端访问,nginx转发到 “http://192.168.80.128:8888/download” 到后端进行验证,验证通过后,转发到“/downloadFile/” 进行下载。

 

以上完毕

标签:192.168,fileName,nginx,location,服务器,权限,response,下载
From: https://www.cnblogs.com/timetriesall/p/18365121

相关文章

  • 在linux上架设Web服务器Apache(Ubuntu)
    欢迎诸位来阅读在下的博文~在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力!江山如画,客心如若,欢迎到访,一展风采文章目录背景1.安装Apache2.启动和检查Apache服务3.配置防火墙4.配置虚拟主机5.启用虚拟主机并重启Apache6.配置域......
  • asp.net 禁止主机交互式 shell 命令执行权限风险 ashx
    以下为ai回复:在ASP.NET应用程序中,如果要防止通过ashx文件执行宿主环境的shell命令以避免潜在的权限提升风险,可以通过设置web.config来限制或禁用此功能。在web.config中,可以通过设置<securityPolicy>来禁止执行shell命令。以下是一个示例配置,它禁用了所有的shell执行权限:<syst......
  • DzzOffice修改权限判断方式解决另存为窗口新建文件无权限问题
    在执行另存为操作并选择文件与位置时,如提示无权限问题,此现象源于权限判断方式存在差异。为解决此问题,以在另存为窗口新建文件时提示无权限问题为例进行阐述。打开\dzz\system\fileselection\ajax.php文件。找到elseif($operation=='newIco'){//新建文件将perm_ch......
  • Nginx
    Nginx的作用代理正向代理是代理客户端的,让你能正常访问目的服务器。与之相反,反向代理是代理服务器的,让大量的请求均衡地访问到某一台服务器上。动静分离在我们的软件开发中,有些请求是需要后台处理的;有些请求是不需要后台处理的,比如说css、js这些文件请求,这些不需要经过后台......
  • nginx源码之Docker镜像制作
    1.下载nginx-1.26.2源码,并解压nginx源码下载:https://nginx.org/download/nginx-1.26.2.tar.gzmkdirdockerbuild&&cd dockerbuild wget https://nginx.org/download/nginx-1.26.2.tar.gztar-xzvf nginx-1.26.2.tar.gz2.干货Dockerfile#编译基础环境准备阶段FROMre......
  • Nginx SSL证书部署
    简介本文介绍在Nginx服务器配置SSL证书,配置成功后即可通过HTTPS加密通道安全访问Nginx服务器环境Nginx+阿里云SSL证书下载证书此处以阿里云证书为例登录控制台->数字证书管理服务选择SSL证书在列表中找到要下载的证书,操作列单机下载选择Nginx服务器类型下载解......
  • 雨云美国二区E5v2服务器测评(非广告)
    注:本文非广告,非推广本文长期更新地址: 雨云美国二区E5v2服务器测评(非广告)-星零岁的博客https://blog.0xwl.com/13594.html今天来测评一下雨云美国二区v2服务器。我测试的这台配置是4-8,35M上传,55M下载,采用Xeon®E5v2CPU,联通9929优化线路。一、网络测试1.ping和tcping......
  • 文件权限管理
    一、用户、用户组、其他人1、用户在Linux中,用户(User)是系统中能够登录并执行任务的实体。每个用户都有一个唯一的用户ID(UID)和用户名。用户在系统中的权限由它的UID和分配的组来决定。通常,一个用户就是一个实际的人,但也可能是一个系统服务或进程。2、用户组用户组(Group)是......
  • h5直播源码,用户登录流程及权限校验
    h5直播源码,用户登录流程及权限校验今天我们来看一下用户登录的流程前端部分 以一个后台管理系统登录为例:登录篇1.用户输入账号和密码点击登录传给服务器用户名和密码2.服务器验证成功后给客户端传递一个token,并且把这个token存在cookies中,这样下次再向服务器发请......
  • 深度优化Nginx负载均衡策略,携手Keepalived打造高可用服务架构新纪元
     作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客目录前言:让我们首先来谈谈容灾与备份策略:实验目标:七台虚拟机集群利用Nginx负载均衡与Keepalived共筑高可用......