首页 > 系统相关 >nginx做文件服务器时使用第三方系统做认证

nginx做文件服务器时使用第三方系统做认证

时间:2023-11-08 22:00:13浏览次数:34  
标签:__ header request auth 认证 nginx 服务器时 Authorization

我们在项目中做文件下载时,一般会使用nginx 做文件下载服务器,但是一旦暴露了 下载链接,其他人就随意下载文件,有安全风险。

其实我们可以使用Nginx的auth_request模块,nginx 在接到下载请求时,将请求转发到我们自己的项目中,我们项目提供一个接口来做认证,认证通过返回nginx 200,否则返回401

栗如:web 项目用户登录会产生一个token, 用户登录后在下载文件时,在请求头(header)中加上Authorization

例如:

nginx 配置如下:

      location /img/ {
        auth_request /auth;
        error_page 401 = @auth_required;
        alias   /data/img/;
        image_filter_buffer 10M;

      }
      location = /auth {
            proxy_pass http://127.0.0.1:8848/verity;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Authorization $http_authorization;
          }
      location @auth_required {
            return 401;  # 认证失败返回 401 状态码
          }

注意: nginx 需要auth_required 模块,在安装时候执行

./configure --with-http_auth_request_module

在使用宝塔面板安装nginx 时,一定要选择编译安装,并记得添加此模块。

后端认证demo

示例为简单的flask 程序

from flask import Flask, request, abort

# 创建一个 Flask 应用实例
app = Flask(__name__)


@app.route('/')
def hello_world():
    print(request.headers)
    return 'Hello, World!'


@app.route('/verity')
def verity_func():
    print(request.headers)
    print(request.url)
    if request.headers.get("Authorization")=='12366666':
        return 'ok',200
    else:
        abort(401)



if __name__ == '__main__':
    # 在开发模式下运行应用
    app.run(host='0.0.0.0',port=8848, debug=True)


/verity 接口模拟解析Authorization认证的过程

测试:

curl --location --request GET 'http://124.70.71.86/img/3.jpg' \
--header 'Authorization: 12366666' \
--header 'User-Agent: Apifox/1.0.0 (https://www.apifox.cn)'

Authorization 的value 内容可以自定义,

此案例仅仅是一个思路,

比如我们在做文件分享时,比如分享文件有效期为7天,我们生成一个随机url,比如 http://www.demo.com/down/iZNuYBDkPI3N.py我们在redis中将文件真实名字与iZNuYBDkPI3N.py对应存储,这条数据在redis 设置过期时间为7天,用户每次下载都拿iZNuYBDkPI3N.py这个名字来redis 找数据, 找不到则证明超过分享时间了。

沿着此思路可以拓展需要业务场景。

标签:__,header,request,auth,认证,nginx,服务器时,Authorization
From: https://www.cnblogs.com/z-x-h/p/17818438.html

相关文章

  • 配置nginx用户认证
    1、安装nginxapt-getupdateapt-getinstall-ynginx2、安装认证工具apt-getinstall-yapache2-utils3、配置认证账密htpasswd-c/etc/nginx/.htpasswdyour_username4、配置nginxvim /etc/nginx/nginx.confserver{listen80;server_nameyour_do......
  • 四方伟业与KeyarchOS完成浪潮信息澎湃技术认证
    日前,成都四方伟业软件股份有限公司(以下简称“四方伟业”)旗下数据治理平台SDCGovernV5.0、可视化分析决策平台SDCUEV5.0、数字孪生可视化平台SDCMEV5.0、人工智能软件SDCMinerV3.0及融合数据软件SDCETLV5.0与KeyarchOSV5完成浪潮信息澎湃技术认证。测试结果表明,双方产品......
  • nginx文件服务器根据文件类型判断预览还是下载
    location/file{charsetutf-8;alias/usr/share/nginx/html/files;autoindexoff;autoindex_exact_sizeoff;autoindex_localtimeon;add_header'Access-Control-Allow-Origin''*'always;add_header'Acce......
  • Nginx
    概念:Nginx是高性能的HTTP和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。 正向代理:需要在客户端配置代理服务器进行指定网站访问。    反向代理:暴露的是代理服务器地址,隐藏了真实服务器IP地址。客户端对代......
  • flutter doctor 认证问题
    运行flutterdoctor发现sdk需要认证,如下图C:\Users\*****>flutterdoctorFlutterassetswillbedownloadedfromhttps://mirrors.tuna.tsinghua.edu.cn/flutter.Makesureyoutrustthissource!Doctorsummary(toseealldetails,runflutterdoctor-v):[√]Flutte......
  • 2023第四期深圳/青岛/武汉/杭州CDGA/CDGP认证报名
    2023年度第四期CDGA和CDGP认证考试定于2023年12月17日举行。考试报名现已开启,相关事宜通知如下: —— 考试科目及时间 ——CDGA数据治理工程师:2023年12月17日(周日)14:00-15:40CDGP数据治理专家:2023年12月17日(周日)14:00-16:10——考试地点 —— 开放的城市有:北京,上海,广州,......
  • 2023第四期深圳/南京/成都/长春CDGA/CDGP认证报名
    2023年度第四期CDGA和CDGP认证考试定于2023年12月17日举行。考试报名现已开启,相关事宜通知如下: —— 考试科目及时间 ——CDGA数据治理工程师:2023年12月17日(周日)14:00-15:40CDGP数据治理专家:2023年12月17日(周日)14:00-16:10——考试地点 —— 开放的城市有:北京,上海,广州,......
  • 2023第四期天津/郑州/沈阳/济南CDGA/CDGP认证报名
    2023第四期天津/郑州/沈阳/济南CDGA/CDGP认证报名2023年度第四期CDGA和CDGP认证考试定于2023年12月17日举行。考试报名现已开启,相关事宜通知如下: —— 考试科目及时间 ——CDGA数据治理工程师:2023年12月17日(周日)14:00-15:40CDGP数据治理专家:2023年12月17日(周日)14:00-16:10......
  • 深圳/成都/武汉/西安CSPM-3项目管理中级认证怎么考?
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • 深圳/成都/武汉/西安CSPM-3项目管理中级认证哪里报名?
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。 【证书含金量】 ·竞聘优先·......