ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx 配置反向代理作为文件服务使用

2021-12-07 22:03:35  阅读:141  来源: 互联网

标签:文件 header 代理 nginx add 反向 location 服务器


业务场景

前提,不知道服务器的账号密码,
目的,想快速的进行服务器之间的文件传输
想到了使用文件服务器,在当前服务器请求目标服务器的文件
wget http://127.0.0.1:3334/file/xxx.jar
感觉只是为了文件的传输去搭建一个文件服务器,感觉有点大材小用。
那么,我就想到了nginx是不是可以反向代理到服务器的指定目录中,进行文件的绝对路径下载?
以下是nginx.conf的部分配置文件,将此段进行配置即可

server {
        listen       3334;
        server_name  localhost;
                client_max_body_size 100M;
        #开启长连接后,返回客户端的会话保持时间为60s,单次长连接累计请求达到指定次数请求或65秒就会被断开,后面的60为发送给客户端应答报文头部中显示的超时时间设置为60s:如不设置客户端将不显示超时时间。
        keepalive_timeout  65 60;

        #在一次长连接上所允许请求的资源的最大数量
        keepalive_requests 100;
        # 测试用
        location / {
              default_type application/json;
              add_header Content-Type 'application/javascript; charset=UTF-8';
              return 200 '{"code":201,"data":{},"msg":"成功","total":0}';
        }

        location /file {
            root /root/app/nginx/apps/app01;
           # add_header Content-Disposition "attachment";
            autoindex on;
            autoindex_exact_size off;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
          root   html;
        }
      }

想防止浏览器自动打开文件而不是下载文件,添加
add_header Content-Disposition "attachment";

// 所有文件都不打开,且支持改名,改名时的访问格式如下所述
location / {
    add_header Content-Disposition "attachment;filename*=utf-8'zh_cn'$arg_n";
}

一般存储在服务器上的文件都不会用原来的名字,所以下载的时候需要改名,可通过url中添加参数,然后在nginx中根据参数来改名。
  举例:参数为 n=xxx.jpg
  url:https"//xxxxx?n=xxx.jpg //表示把下载下来的文件名字改为xxx.jpg
  nginx需要配置成

location / {
  if ($request_uri ~* ^.*\?n=([^&]+)$) {
    add_header Content-Disposition "filename*=$arg_n";
  }
}

支持改名和访问时不打开文件<有时候,我们经常会遇到直接访问.txt文件的时候,就直接在浏览器里打开了,其实我们想要的是下载>

location / {
  if ($request_uri ~* ^.*\?n=([^&]+)$) {
    add_header Content-Disposition "attachment;filename*=$arg_n";
  }
}

我将服务器的绝对路径进行代理出来。使用http访问的时候,可以写入脚本,从外部输入变量进行文件名的写入。基于扩展,我可以在Jenkins服务编译后的文件包存放,然后,在各个服务器中使用wget进行请求地址。

标签:文件,header,代理,nginx,add,反向,location,服务器
来源: https://www.cnblogs.com/darling331/p/15659033.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有