Minio + Nginx 实现静态资源对外访问

这篇具有很好参考价值的文章主要介绍了Minio + Nginx 实现静态资源对外访问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Minio + Nginx 实现静态资源对外访问

背景:

        公司交付项目,文件服务java + minio实现文件基本功能。其中包含文件上传与下载与在线预览,由于文件下载功能实现方式问题(web直接调用文件预览接口,有minio直接返回可预览路径二次请求实现文件下载)。

        在公司局域网内没有问题,到客户环境文件无法下载,客户环境文件上传直接同网段局域网内部通讯没有问题,但是下载请求为公网,又不想打破网关内内网通讯,静态低敏访问直接开启对外访问权限的业务逻辑,所以,解决问题的方式只有一个,就是下载功能返回的路径必须是公网可以正常访问。

剖析问题:

        代理实现,配合dmz区  (这里用的是nginx)代理直接将请求转发一下就可以了,思路是对的,但是请求穿透到minio服务器后访问被拒绝,验证密钥失败。

        密钥?校验失败?要解决这个问题就要先了解minio加密与校验的环节,没有必要非的知道minio的加密手段,校验失败肯定就是在校验前,提供的校验参数与加密时不一致,问题出在哪里了呢?在转发前是没有问题的啊,转发之后可以访问了,但是校验不通过,那一定就是转发环节出了问题,结合以上分析,去minio找了官方文档,按照官方配置还是不可以。

        肯定是参与加密的参数不满足呀!文章来源地址https://www.toymoban.com/news/detail-472876.html

解决问题:

  • minio(yaml.xml)配置
minio:
  oss:
    policyExpire: 300
    accessKeyId:  123456
    accessKeySecret:  123456
    endpoint: http://127.0.0.1:9199
    # 可以公网访问的域名,将minio返回的 ip 和端口直接替换就可以访问了
    web_endpoint: https://demo.chenyb-sec.com
    bucketName: oss-chenyb
    # km 最大支持 5g
    maxSize:  50
  • nginx配置
server {
    listen       80;
    listen  443 ssl;
    server_name  https://demo.chenyb-sec.com;

    #选配 优化属性
    ignore_invalid_headers off;
    client_max_body_size 1000m;
    proxy_buffering off;

    #必须 防止请求头丢失
    underscores_in_headers on;   

    #选配 优化属性
    proxy_set_header        Host            $http_host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Scheme        $scheme;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    add_header Pragma       "no-cache";

    #选配 优化属性
    # 针对缺失"X-Content-Type-Options"头漏洞整改建议
    add_header X-Content-Type-Options nosniff;   #影响demo服务登出等功能
    # 针对缺失"X-XSS-Protection"头漏洞整改建议
    add_header X-XSS-Protection "1; mode=block";
    # 针对点击劫持:X-Frame-Options头缺失漏洞的整改建议
    #add_header X-Frame-Options "SAMEORIGIN";
    # 针对缺少HTTP Strict-Transport-Security头漏洞的整改建议
    add_header Strict-Transport-Security "max-age=31536000;includeSubdomains;";
    
   

    #必须 minio 转发路由
    # 路由与minio.oss.bucketName  保持一致 
   location /oss-chenyb/ {

       # minio.oss.endpoint 参数,参与签名(服务直连地址)
       proxy_set_header X-Real-IP 127.0.0.1:9199;

       # minio.oss.endpoint 参数,参与签名(服务直连地址)
       proxy_set_header Host 127.0.0.1:9199;
       
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;

       proxy_connect_timeout 300;
       # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
       proxy_http_version 1.1;
       proxy_set_header Connection "";
       chunked_transfer_encoding off;

       # minio 服务直连地址
       proxy_pass  http://127.0.0.1:9199;
    }
  • 注意两个配置文件呼应关系即可
    • web_endpoint:可以请求到nginx的域名
    • bucketName:最好是nginx路由规则
    • endpoint:能请求到minio的通讯地址,与proxy_pass、proxy_set_header Host、proxy_set_header X-Real-IP保持一致,因为要参与校验

到了这里,关于Minio + Nginx 实现静态资源对外访问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Portainer创建Nginx容器并部署Web静态站点实现公网访问

    最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 Portainer是一个开源的Docker轻量级可视化工具,它提供了一个直观的Web界面,让你轻松管理

    2024年02月04日
    浏览(41)
  • 成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存

    使用 nginx做动静分离,在将服务器中的静态资源修改后,访问页面,发现页面没有及时更新。 我这里是清除了浏览器缓存。 有关nginx禁止走缓存、直接走服务器请参考以下文章。 资料参考:Nginx更新静态资源不生效 我更新了静态资源下的一个文件。然后正常情况应该是在点

    2024年02月16日
    浏览(34)
  • 如何在Portainer中创建Nginx服务并搭建静态站点实现公网访问本地网站

    Portainer是一个开源的Docker轻量级可视化工具,它提供了一个直观的Web界面,让你轻松管理和监控Docker容器、镜像和网络等。之前在文章《Linux Docker 图形化工具 Portainer远程访问》中我们讲了如何使用Docker部署一个Portainer,并结合cpolar内网穿透实现了公网访问成功。本篇文章教

    2024年04月09日
    浏览(47)
  • 【Nginx】静态资源部署(上)

    上网去搜索访问资源对于我们来说并不陌生,通过浏览器发送一个HTTP请求实现从客户端发送请求到服务器端获取所需要内容后并把内容回显展示在页面的一个过程。这个时候,我们所请求的内容就分为两种类型: 静态资源、 动态资源 静态资源即指在服务器端真实存在并且能

    2024年01月21日
    浏览(49)
  • Nginx(2)静态资源部署

    上网搜索访问资源是通过浏览器发送一个HTTP请求实现从客户端发送请求到服务器端获取所需要内容后并把内容回显展示在页面。这时所请求的内容就分为两种类型,一类是静态资源、一类是动态资源。 静态资源: 指在服务器端真实存在并且能直接拿来展示的一些文件,比如

    2024年02月07日
    浏览(46)
  • SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

    记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源,在开发的时候,一般选择前后端分离的方式,前端使用vue 后端使用SpringBoot,通常情况下,部署都是前端通过http去请求后端资源,涉及到http请求,那么肯定需要资源的目标地址IP,一般云端部署给到I

    2024年02月09日
    浏览(75)
  • 如何在nginx中配置静态资源

    ​ 在nginx中配置静态资源首先要保证你的项目是通过nginx来访问网关请求请求的!,因为静态资源是保存在nginx中的,可以大大的减少运行速度! ​ 首先,我们需要将静态资源导入到nginx中 譬如:你现在有一个静态资源的文件夹!包含你项目的所有静态资源,将其放入到ngi

    2024年02月16日
    浏览(51)
  • [Vite] 静态资源的动态访问

    这篇笔记是对渡一教育网课的知识点总结,源视频👉 静态资源的动态访问【渡一教育】 。 Vite脚手架在打包代码的时候,会把源代码里对于静态资源的访问路径转换为打包后静态资源文件的路径。主要的区别是 文件指纹 ,即打包后的文件会带上一个hash值,用于区分不同版

    2024年02月19日
    浏览(40)
  • 【Nginx】静态资源部署、反向代理、负载均衡

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ nginx配置文件整体分为三部分: 全局块 :Nginx运行相关的全局配置 events块 :网络连接相关的配置 http块 :代

    2024年02月13日
    浏览(47)
  • 补充前端访问静态资源的一个错误

    注意,前端访问时带上本地服务端的host,例如http://localhost:8080, 后端改写的代码如下,注意file后面一定是三个‘/’,不然的化虽然能解析,但访问不到。 错误来源https://mp.csdn.net/mp_blog/creation/editor/135489062 错误内容已改正。 

    2024年01月21日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包