自建对象存储服务minio在使用nginx进行反向代理时出现对象无法正常共享的解决办法

2023-11-14

什么是minio

Minio是在Apache License v2.0下发布的对象存储服务器。它与Amazon S3云存储服务兼容。它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/VM镜像等。对象的大小可以从几KB到最大5TB。

docker 安装示例

docker run -p 9000:9000 --name minio1   -e "MINIO_ACCESS_KEY=自己的access_key,相当于用户名"   -e "MINIO_SECRET_KEY=自己的secret_key,相当于密码"   -v /mnt/minio-data-v1:/data   -v /mnt/minio-v1:/root/.minio  -d  minio/minio:RELEASE.2018-07-31T02-11-47Z server /data

使用nginx进行反向代理

因为服务器有其他服务,并且使用的nginx作为反向代理,初始配置如下:
在/etc/nginx/conf.d下新建文件minio.conf

server {
    listen 80;
    gzip on;
    server_name oss.allocmem.com;
    location / {
      proxy_pass http://127.0.0.1:9000;
    }
}

nginx -s relaod让nginx重新加载

出现问题

在使用上面配置的用户名和密码进入主页后,上传了自己的文件,当点击生成共享连接的时候,如下图:

访问这个共享连接会报错SignatureDoesNotMatch:

原因及解决方案

错误提示SignatureDoesNotMatch签名不正确,后来发现和nginx反向代理在做转发的时候所携带的header有关系.minio在校验signature是否有效的时候,必须从http header里面获取host,而我们这里没有对header作必要的处理.如果源请求未携带这个头,则minio处无法获取请求头中的host,目前我这里测试看请求有携带Host,这里的机制问题出在nginx,nginx没有把这个host转发过去,而用ip的时候Host为 ip:port,这种情况是正常的,这应该和nginx的默认配置proxy_set_header Host $http_host有关系

如果不想改变请求头“Host”的值,可以这样来设置:
proxy_set_header Host httphost;使 h t t p h o s t ; 但 是 , 如 果 客 户 端 请 求 头 中 没 有 携 带 这 个 头 部 , 那 么 传 递 到 后 端 服 务 器 的 请 求 也 不 含 这 个 头 部 。 这 种 情 况 下 , 更 好 的 方 式 是 使 用 host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名:

我们这里的minio.conf需要添加下面代码

proxy_set_header Host  $host;

$host代表的是当前虚拟主机的host,即上面配置的oss.allcmem.com.完整示例如下:

server {
    listen 80;
    gzip on;
    server_name oss.allocmem.com;
    location / {
      proxy_pass http://127.0.0.1:9000;
      proxy_set_header   Host    $host;
    }

}

参考

  1. https://docs.minio.io/
  2. http://liuluo129.iteye.com/blog/1943311
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自建对象存储服务minio在使用nginx进行反向代理时出现对象无法正常共享的解决办法 的相关文章

  • 使用 Clapprjs 在网页上流式传输 .m3u8

    我使用 nginx rtmp 将 rtmp 转换为 hls 并使用 Clappr 在网页中进行流式传输 但 Clappr 采用旧的 ts 段 导致 404 错误 因为它在服务器上被删除 如何解决这个问题 抱歉 这是我第一次使用 nginx
  • nginx 服务器中不允许方法 405 错误

    我们的反应应用程序在我们的本地机器上正常工作 但我们将其延迟到更高的环境中 它不起作用 它发送405 Method not allowed error 页面正在加载 每当我们要求时submit form这个问题来了 下面是我的nginx c
  • 使用 nginx 代理时在 RStudio 中运行闪亮的应用程序

    我正在尝试使用通过 nginx 代理的 RStudio 服务器来开发一个闪亮的应用程序 当我使用 RStudio 而不是服务器 来运行闪亮的应用程序时 一切正常 但是 当我通过代理 RStudio 运行时 该应用程序出现在 查看器 窗格中
  • Nginx vs Apache 用于高流量站点

    Would nginx作为高流量网站的网络服务器是否是更合适的选择 我们将建立的网站是一个电子商务网站 如果这有什么不同的话 无论哪种方式 从技术角度来看 我真的对实际的 原因 感兴趣 即 为什么会nginx从技术角度来看 对于此类网站来说
  • 使用 client_body_in_file_only 进行 nginx 文件上传

    晚上好 我需要将静态内容上传到 nginx 服务器 1 9 因此上传模块不适用于此版本 我读过这篇文章 Nginx 直接文件上传 无需通过后端传递 https coderwall com p swgfvw nginx direct file
  • Kubernetes nginx 入口控制器返回 502,但仅适用于 AJAX/XmlHttpRequest 请求

    我有一个在 nginx 入口控制器后面运行 Kubernetes 的 Web 应用程序 它对于请求浏览工作正常 但来自浏览器的任何 AJAX XMLHTTPRequest 都会从 nginx 收到 502 错误 我捕获了常规请求和 AJAX
  • Nginx反向代理(proxy_pass)不传递子文件夹

    我想在子文件夹配置中运行应用程序 Mattermost 例如 https www example com mattermost https www example com mattermost location mattermost gzi
  • kubernetes 集群中 django 应用程序的 Nginx 配置

    我在为部署在 kubernetes 中的 django 应用程序创建 nginx 配置文件时遇到困难 Nginx 和 app 是同一集群中的两个独立容器 据我了解 容器可以通过 127 0 0 1 XX 和主机名相互通信 我为此使用 min
  • kubernetes nginx ingress 无法将 HTTP 重定向到 HTTPS

    我有一个托管在 Google Cloud 平台中的网络应用程序 该应用程序位于负载均衡器后面 而负载均衡器本身位于入口后面 入口设置了 SSL 证书 并按预期接受 HTTPS 连接 但有一个问题 我无法让它将非 HTTPS 连接重定向到 H
  • nginx docker 容器:502 错误网关响应

    我有一个服务监听 8080 端口 这不是一个容器 然后 我使用官方镜像创建了一个 nginx 容器 docker run name nginx d v root nginx conf etc nginx conf d p 443 443 p
  • nginx 反向代理 websocket

    nginx 现在支持代理 websockets 但我无法找到任何有关如何在没有单独的情况下执行此操作的信息location应用于使用 websocket 的 URI 的块 我见过一些人推荐这种方法的一些变体 location proxy h
  • WebSockets 监听 UNIX 域套接字?

    是否可以在 nginx 服务器后面设置一个 WebSockets 服务器来处理 UNIX 域套接字上的连接 我目前在同一台计算机上有多个 WebSocket 服务器实例 并且存在端口共享问题 所有实例都必须分配一个唯一的端口 我想避免这种情
  • 如何正确链接 php-fpm 和 Nginx Docker 容器?

    我正在尝试链接 2 个单独的容器 nginx 最新 https registry hub docker com nginx php fpm https registry hub docker com php 问题是 php 脚本不起作用 也
  • Http POST 删除 URL 中的端口

    我有一个用 Django 构建的网络应用程序 我目前正在家里的路由器后面的笔记本电脑上运行它 我将路由器配置为将发送到特定端口的所有流量路由到该笔记本电脑 我将 Nginx 作为 Apache 的反向代理 使用 mod wsgi 来运行 D
  • NGINX hashbang 重写

    我想知道 hashbang url 的位置或重写 nginx 指令会是什么样子 基本上像前端控制器一样通过 hashbang 路由所有非 hashbanged url 所以 http example com about staff 将路由至
  • 将应用程序级别用户名/用户 ID 注入 nginx/Apache 日志

    有没有办法将应用程序级别的用户名或 id 在本例中为 django 用户名或 id 注入 Apache 或 ngnix 日志中 请注意 我不是询问 HTTP 身份验证用户名 我目前正在使用一个简短的自定义中间件将此数据添加到响应标头 如下所
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • NGINX 上的 SSL 终止

    我已经购买了 SSL 证书 并在验证模数时正确地将其捆绑在一起 即https kb wisc edu middleware 4064 https kb wisc edu middleware 4064 那么哈希值是相同的 我已将证书和密钥移
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt

随机推荐

  • python的socket通信,实现数据监听,与串口助手连接并且收发

    1 Socket通信 1 Socket原理 Socket是一种网络通信的抽象接口 用于在不同计算机之间进行进程间通信或网络通信 Socket通常基于TCP IP协议栈 通过网络套接字 socket 在网络中传输数据 它允许不同计算机之间的进
  • 交通路标识别(毕业设计)

    概述 代码获取 可私信 在TensorFlow中实现单镜头多盒检测器 SSD 用于检测和分类交通标志 该实现能够在具有Intel Core i7 6700K的GTX 1080上实现40 45 fps 请注意 此项目仍在进行中 现在的主要问题
  • 基于 ACK Fluid 的混合云优化数据访问(一):场景与架构

    本系列文章将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景 概述 在 AI 和大数据时代 算力即正义 强大的算力推动了源源不断的创新 然而 企业自建的算力集群存在资源容量和弹性能力相对有限的问题 在业务低谷时可能会面临高昂
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!

    目录 一 CTF简介 二 CTF竞赛模式 三 CTF各大题型简介 四 CTF学习路线 4 1 初期 1 html css js 2 3天 2 apache php 4 5天 3 mysql 2 3天 4 python 2 3天 5 burp
  • [Concept] IETF 国际互联网工程任务组

    IETF The Internet Engineering Task Force 国际互联网工程任务组 1 1985年成立 2 公开性质的大型国际民间团体 3 互联网标准化组织 4 主要任务 负责互联网相关技术规范的研发和制定 可以在官方网
  • 向Git提交新项目

    向Git提交新项目 假设现在存在项目iyowei cn 项目目录结构如下 1 2 3
  • Maven学习笔记二十:Maven仓库(远程仓库的配置)

    Maven仓库 远程仓库的配置 在很多情况下 默认的中央仓库无法满足项目的需求 可能项目需要的构件存在于另外一个远程仓库中 如 JBoss Maven仓库 这时 可以在POM中配置该仓库 见代码请单
  • cnn 示意图_基于BERT+CNN及GRU语言模型的司法考试问答模型

    在上文 1 提到的BERT CNN司法考试模型的基础上 对模型结构和参数进行了调整 调整后增加了CNN层数 示意图如图1 图1 BERT编码后接入的CNN结构示意图 其中详细参数见图2 图2 CNN和输出层的网络结构参数 在给出的司法考试训
  • Python爬虫实战之抓取猫眼电影

    Python爬虫实战之抓取猫眼电影 1 爬虫概念 网络爬虫 又称为网页蜘蛛 网络机器人 在FOAF社区中间 更经常的称为网页追逐者 是一种按照一定的规则 自动地抓取万维网信息的程序或者脚本 另外一些不常使用的名字还有蚂蚁 自动索引 模拟程序
  • 原码、反码以及补码

    目录 一 概念 二 补码的意义 一 概念 计算机底层存储数据时 存储的是数据对应的二进制数字 对于整型数据 其二进制表示形式有三种 分别是 原码 反码 补码 而实际存储的是整型数据的补码 原码 反码以及补码都是有符号的 其中最高位存放符号位
  • Websocket(一)——原理及基本属性和方法

    初次接触 WebSocket 的人 都会问同样的问题 我们已经有了 HTTP 协议 为什么还需要另一个协议 它能带来什么好处 答案很简单 因为 HTTP 协议有一个缺陷 通信只能由客户端发起 举例来说 我们想了解今天的天气 只能是客户端向服
  • 《Kubernetes下载篇:Ubuntu20.04下载指定版本kubeadm及相关镜像》

    一 背景 在专网情况下 你是无法下载K8S相关的软件包及镜像 这个时候你可能需要提前下载好 那么针对这种情况 如何下载指定版本的K8S相关的软件包及镜像呢 这里以ubuntu 20 04系统为例 通过ctr工具 下载v1 25 8版本的软件
  • Android中OkHttp源码阅读二(责任链模式)

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 Android OkHttp源码阅读详解一 看OkHttp源码 发现OkHttp里面使用了责任链设计模式 所以才要学习责任链设计模式 小
  • Java Calendar getActualMinimum()方法与示例

    Calendar类的getActualMinimum 方法 Calendar Class getActualMinimum method getActualMinimum method is available in java util p
  • 美国CN2服务器速度怎么样

    美国服务器以免备案 大带宽 性价比高的优势 多用于企业 电商 外贸 视频等个中大型网站建设 但是 因中美服 务器接口原因 导致某些服务器的网络并不稳定 这时候就会对美国服务器产品失望 解决这种问题的方法就是选择美国服 务器时 选用美国CN2
  • Java逆序数

    逆序数 在一个5个数的数组中 输出逆序数 在一个排列中 如果一对数的前后位置与大小顺序相反 即前面的数大于后面的数 那么它们就称为一个逆序 一个排列中逆序的总数就称为这个排列的逆序数 输入用例 1 2 3 4 5 输出用例 0 输入用例 2
  • shell重启脚本-脚本停止

    经常需要对shell进行重启 重启首先就得停止原来的程序 有时候需要使用kill 进程的方式 每次手工查进程 比较麻烦 下面弄个工具 APP NAME app jar echo 停止XXX应用服务 is exit 获取PID PID ps
  • 机器人教育的培养目标

    国内近几年流行一种机器人编程教育 以培养少年们的综合能力为主 格物斯坦表示 机器人在科技领域还有很多未解的谜团 需要有探索精神和聪慧头脑的人去打破砂锅问到底 机器人教育对孩子未来的影响很大 尤其对孩子的学习和认知过程中起到了强力推进的作用
  • c# webform 读取和编辑Web.config中的 appSettings

    Web config
  • 自建对象存储服务minio在使用nginx进行反向代理时出现对象无法正常共享的解决办法

    什么是minio Minio是在Apache License v2 0下发布的对象存储服务器 它与Amazon S3云存储服务兼容 它最适合存储非结构化数据 如照片 视频 日志文件 备份和容器 VM镜像等 对象的大小可以从几KB到最大5TB