使用Nginx反向代理minio,提供文件公共访问

news/2024/9/20 9:36:34/文章来源:https://www.cnblogs.com/gaoyanbing/p/18315876

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

在之前的一篇文章介绍了《使用Docker搭建minio对象存储与mc客户端常用命令》,这篇文章继续分享下如何将minio的存储桶设置为公有读、私有写,并且通过nginx反向代理实现文件公共访问。

注意:阅读此文章的用户需要一定Linux基础知识和阅读官网文档的习惯。

前提

已经搭建好minio服务,并且安装好了mc客户端,同时已将存储添加到mc客户端配置中。

  • Docker搭建可参考:https://www.xiaoz.me/archives/16215
  • 其它搭建方式也可以参考:http://docs.minio.org.cn/docs/(这个中文版文档可能不是最新的,需要最新的可以去英文版官网)
  • 安装好mc客户端:MinIO客户端快速入门指南

设置minio存储桶为公有读、私有写

用过国内对象存储的同学可能知道服务商会提供一个存储桶设置公有读、私有写的功能,这个场景应用非常广泛,比如静态文件的分发访问。minio是一个兼容S3协议的存储,S3上似乎没有这个公有读、私有写的概念。S3上叫policy(管理访问策略)

如果需要将minio某个存储桶设置为公有读、私有写,只需要将policy策略设置为download即可,命令如下:

代码语言:javascript
复制
#设置minio的匿名访问策略,可选值有none, download, upload, public
mc policy set upload host/bucket/
#查看匿名策略
mc policy list host/bucket/
  • host:就是你在mc config host add时设置的名称
  • bucket:指存储桶的名称

设置完毕后,我们可以通过访问http://IP:9000/bucket/file_name来进行测试,如果不加任何参数,能直接访问到文件,说明设置已经生效。

通过Nginx反向代理进行访问

minio默认访问接口使用9000端口号,每次都带上端口访问显然不太方便,一般是结合nginx反向代理来访问。xiaoz写了一个nginx反向代理的配置,大家可以用作参考:

代码语言:javascript
复制
server {listen 443 ssl http2;#改成你自己的SSL证书路径ssl_certificate /path/domain.com.crt;ssl_certificate_key /path/domain.com.key;ssl_session_timeout 1d;#ssl_session_cache builtin:1000 shared:SSL:10m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';ssl_prefer_server_ciphers on;ssl_stapling on;ssl_stapling_verify on;add_header Strict-Transport-Security max-age=15768000;proxy_buffering off;#domain.com改成你自己的域名server_name domain.com;#网站日志的路径,注意nginx用户需要可写,如果不需要可以注释掉access_log /data/wwwlogs/domain.com.log combined;charset utf-8,gbk;location / {#开启自定义错误页面proxy_intercept_errors on;proxy_connect_timeout 300;# Default is HTTP/1, keepalive is only enabled in HTTP/1.1proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;#bucket改成你自己的存储桶名称,注意:末尾需要带有一个/proxy_pass http://127.0.0.1:9000/bucket/;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#客户端缓存时间,这里设置为7天,根据自己的需要设置即可expires 7d;add_header XCDN-Cache "$upstream_cache_status";#可以在存储桶事先上传一个html文件或者图片,用作404页面,然后改成存储桶下面的绝对路径,以/开头,如果不需要,可以将其注释error_page 404 /404.png;}
}
server
{# 301重定向listen 80;server_name domain.com;rewrite ^(.*) https://domain.com$1 redirect;
}

设置完毕后通过nginx -t检查配置是否正确,并重载nginx配置nginx -s reload,然后通过你的域名http://domain.com/filename进行访问测试。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/758720.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第五讲:全局锁和表锁 :给表加个字段怎么有这么多阻碍?

目录第五讲:全局锁和表锁 :给表加个字段怎么有这么多阻碍?引言:锁的分类:全局锁场景:弊端:好处分析:回顾:提出问题:问题一:问题二:表级锁表锁:元数据锁(MDL)案例:变故发生:基于案列说问题:操作小结提问:官方:我的理解(片面了):深入: 第五讲:全局锁和表锁…

01-Scala开发环境搭建

Scala开发环境搭建 1. 安装JDK: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 2. IDEA安装Scala插件3.添加Scala的全局的Libraries4.打印Hello WorldTips:Scala中为什么要在object中才能使用Main方法? Scala中将“静态”与“类”区分的很…

2024-07-22 如何让宽度和高度一致(flex布局)

<template><div class="demo-container"><div class="demo-item"><div class="demo-title">方向指示类图标</div><div class="demo-content"><div class="demo-box" v-for="(i…

Scala开发环境搭建

Scala开发环境搭建 1. 安装JDK: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 2. IDEA安装Scala插件3.添加Scala的全局的Libraries4.打印Hello WorldTips:Scala中为什么要在object中才能使用Main方法? Scala中将“静态”与“类”区分的很…

超声波雷达在APA自动泊车功能中的应用与仿真

自动泊车辅助系统(APA)是现代汽车智能驾驶技术的重要组成部分,该系统使得车辆能够在没有任何人为干预的情况下,自动完成泊车过程。具体来说,APA系统在泊车过程中通过布置在车辆周围的传感器(环视摄像头、超声波雷达等)完成对有效车位以及障碍物的感知识别,再进行泊车路…

VScode利用EIDE和cortex-debug进行stm32开发(包括配置以及使用)

目录前言必要准备第一步:安装vscode插件——EIDEEIDE是什么EIDE的下载EIDE的配置(重点)EIDE功能的简单介绍1.项目的建立:新建项目或者导入项目2.为项目选择芯片支持包(不是必须)3.构建配置4.烧录配置5.项目属性和项目设置6.安装实用工具和打开插件设置第二步:安装vscode插…

SFCNR论文阅读笔记

Self-supervised Contrastive Enhancement with Symmetric Few-shot Learning Towers for Cold-start News Recommendation论文阅读笔记 Abstract 现存的问题: ​ 如今,新闻的传播速度快于消费速度。这与快速的新闻周期和延迟更新一起,导致了具有挑战性的新闻冷启动问题。同…

洛谷P10693

洛谷P10693 好奇怪的题目编号 思路提取input 11 2 13 4 5 3 7 9 9 11 11 12 output 9以人造数据为例。 首先我们让\(i\)\(\to\)\(a_i\)连边,整个分三种情况(对应图中三部分)。第一部分:\(i\)坐到了\(a_i\)(\(a_i\)\(\le\)\(n\))这个位置,那么\(a_i\)就没有地方坐了,他只…

WSL默认安装目录

我当前在win11下进行以下操作,其它系统版本有问题可以留言一、安装WSL前提条件:我们需要保证你的操作系统版本满足 **Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 ** 才能使用以下命令。 启用适用于 Linux 的 Windows 子系统:打开powershel…

【日记】坏了,0721 真成为柚子厨的标记了(418 字)

正文今天是 7 月 21 号,0721,然后柚子社入驻 B 站了,开始我以为是整活,结果发现是真的。草,这下 0721 真成柚子厨纪念日了。有点难绷又有点好笑。睡觉的一天。我原以为 14:30 睡到 16:30 差不多了,結果一觉睡到 17:30。草。我想着周末,也就没设闹钟了,睡到什么时候随缘…

京东员工达近52万人!阿里的2倍、拼多多的30倍

据最新数据显示,京东员工总数已接近52万人。这一数字是阿里巴巴的2倍、腾讯的5倍、拼多多的30倍。对比其他互联网公司普遍以降本增效为主基调,京东的员工数量反而增加。过去一年增加了66445人,近两年总计增加13万人。据最新数据显示,京东员工总数已接近52万人。这一数字是阿…

线段树优化建图一种编号方式的理解

int id(int l,int r) {return (l+r)|(l!=r);} //代码1证明思路:引导并说明某种做法发生冲突的情况,并证明修改后不会发生冲突 首先让我们考虑如果为 int id(int l,int r) {return (l+r);} //代码2会出现什么冲突,如图此时 [1,3] 与 [2,2] ,[1,5] 与 [3,3] 冲突结论1:线段树…