Minio nginx配置https和http问题解决,疑难症全网首发

以下问题基本上是因为NGINX代理出现

一、API直接返回单独的错误: io.minio.errors.ErrorResponseException: Access denied

二、API直接返回的错误:The request signature we calculated does not match the si

三、预览文件或者图片返回错误

<Error>
<Code>AccessDenied</Code>
<Key>1672887375909191680.png</Key>
<BucketName>9269770290188565a62b37a563d10a5a</BucketName>
<Resource>/9269770290188565a62b37a563d10a5a/1672887375909191680.png</Resource>
<RequestId>176BDD0C470B0828</RequestId>
<HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId>
</Error>

以上三个问题都属于Access denied 这个情况,但是原因却各有不同,解决方案也不一样。无论是国内还是国外解决方案都很贫瘠。所以经过我两天的踩坑已经解决问题

这些问题都是只有在使用nginx代理情况下才会出现,如果正常使用ip是不会有问题的,但是直接用ip的话,难免暴露出一些问题和不专业。

问题一的原因及解决方案
出现这个的原因大多数情况下,确实与服务器时间是否一致有关,但是不是所有都是。

部分是由于调用了minioClient.bucketExists(); 这个API则引起异常问题。

解决方式,只要不调用判断是否存在桶api即可,改成获取所有桶,然后遍历判断

该问题具体原因不详,我之前本地nginx代理没有问题,但是使用服务器的nginx代理却不能使用这个api,nginx版本是同样的。这个情况,后续有空我会继续研究。我提交过issue,但是被忽略了。

问题二的原因及解决方案
出现该问题主要是因为api请求验签不通过,因为验签在nginx转发时将host和port是否有携带。

解决方案:

client连接接口分为两种,域名和端口

例如:http://oss.baidu.com,http://oss.baidu.com:6661

nginx 配置时需要区分这两种方式:

proxy_set_header Host $http_host; #域名形式配置,例如:http://oss.baidu.com (后缀没有斜杠)

proxy_set_header Host $host:$server_port; #例如: http://oss.baidu.com:6661

完整示例:

9000端口就是data接口(例如上传和客户端连接),9001是minio控制台端口


server {
        listen 80;
        server_name oss.baidu.com;
		
		location / {
			proxy_set_header Authorization $http_authorization;
			proxy_set_header Host $http_host;
			proxy_pass http:/127.0.0.1:9000;
			proxy_set_header  X-Real-IP    $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
		}

}

https 配置也同理。其实只需要http用于上传,https用于文件预览或下载即可,示例:

只要是同一个域名或域名与端口即可

预览地址:https://oss.baidu.com/storage/桶名/文件名.png?xxxx

storage 是定义的上下文

server {
listen 443 ssl http2;
server_name oss.baidu.com;
gzip on;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security “max-age=31536000”;

    location ^~/storage/ {
        proxy_buffering off;
        proxy_set_header Host $http_host;
        rewrite ^/storage/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header  X-Real-IP    $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

问题三的原因以及解决办法
这个问题就解决方式非常简单

1.域名 或 域名:端口,必须要完全统一,否则会因为host不同签名不通过

2.9000端口(minio默认端口)上传,也必须要9000端口查看或下载。9001不得使用

3.根据我上述的nginx配置就可以解决以问题二和问题三。


文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/9838

(0)
凯影的头像凯影
上一篇 2023年10月17日 下午5:53
下一篇 2023年10月18日 下午3:24

相关推荐

  • atop:监控Linux系统资源与进程

    命令简介 atop 命令是一款监控 Linux 系统资源与进程的工具,非内部命令,需要安装。 atop 是以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析,atop是一款开源软件。 语法格式 选项说明 进程图…

    2023年9月5日
    93300
  • Ubuntu20.04 Server版安装图形界面并使用VNC实现远程桌面

    一:Ubuntu端 1、进行VNC设置之前,需要有图形界面,没有的可以执行以下代码安装图形界面 2、如上图所示运行后进入安装程序,进入GUI界面,通过控制“↑”“↓” 找到Ubuntu desktop按空格键选中,再按Tab键跳到OK选项回车!此处等待时间较长,然后重启开机,开机若未进入图形界面则需查看第四步是否配置完成,若未完成则需要再次执行此步骤。成功后…

    2022年7月12日
    5.0K00
  • Linux系统下配置双网卡只能ping通一个解决方案

    解决办法:第一步:找到两块网卡名称,再执行关闭反向路由检查(命令中第二及第三项根据实际网卡名来替换) 第二步:配置完之后你会发现双IP都能ping通了,但如服务器重启后将会默认开启,所以还要执行下一步骤来防止每次开机自动关闭反向路由检查,将以上命令加入 /etc/rc.local 即可。 其他:如涉及到此文件权限可以给/etc/rc.local文件添加执行权…

    2023年5月5日
    1.9K00
  • K8S集群搭建高可用prometheus+grafana

    使用k3s来搭建测试环境。 为什么使用k3s K3s 是一个轻量级的、完全兼容的 Kubernetes 发行版本。非常适合测试。 K3s将所有 Kubernetes 控制平面组件都封装在单个二进制文件和进程中,文件大小<100M,占用资源更小,且包含了kubernetes运行所需要的部分外部依赖和本地存储提供程序。 K3s提供了离线安装包,安装起来非常…

    2022年11月22日
    1.1K00
  • CentOS 7搭建本地yum源和局域网yum源

    看到这个都是情非得已的,话不多说,直接盘 搭建本地yum源 本地yum源,就意味着只有搭建该yum源的这台服务器能使用,其它的服务器都不能使用该yum源。搭建本地yum源的所有步骤如下: #准备好一个centos 的镜像,我这里是CentOS-7-x86_64-DVD-1810.iso # 在/local-yum目录创建挂载镜像的文件夹 # 将iso镜像挂载…

    2023年5月4日
    1.0K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信