阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

509次阅读
没有评论

共计 2956 个字符,预计需要花费 8 分钟才能阅读完成。




本站提供 Linux 服务器运维,自动化脚本编写等服务,如有需要请联系博主 QQ:337003006

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

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

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

前提

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

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

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

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

# 设置 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 反向代理的配置,大家可以用作参考:

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.1
        proxy_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 进行访问测试。

相关推荐

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-04-26发表,共计2956字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中