阿里云oss出现The bucket you are attempting to access must be addressed using OSS third level domain.

oss是什么?

对象存储OSS 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。

为什么会出现这个问题?

  1. 由于ossClient设置错误导致。
  2. 由于没有在oss控制台添加域名导致。
  3. 由于没有进行反代理配置而导致。
  4. oss-browser也出现该报错。

如何解决问题?

ossClient未设置setSupportCname

这里以JavaSDK为例。
解决方法:setSupportCname设置为true.

private static final ClientBuilderConfiguration CONFIGURATION = new ClientBuilderConfiguration();
CONFIGURATION.setSupportCname(true);
OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESSKEYID, ACCESSKEYSECRET,CONFIGURATION);

由于没有在oss控制台添加域名导致。

注意,导致该问题的前提是使用:域名/路径/文件 是可以正常访问的,不会出现其他无法访问的问题,注意是否该文件选择的权限是否为公共
解决方法:到oss控制台添加域名解析。
在这里插入图片描述

这里写你的服务器域名: 在这里插入图片描述
并进行域名解析。如果你选择了ecs反代理,那么解析选择A解析并指向ecs外网,公网访问指向oss的公网链接即可。
这里以反代理为例:
在这里插入图片描述

反代理访问oss出现该问题

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

要不是oss要流量费我会用ecs代理?为了省钱不择手段。
设置Nginx的反代理:
server_name在80端口只有一个服务器的情况下不需要设置;
proxy_set_header设置为Host $host或Host 你的域名;
proxy_pass设置为指定bucket的oss内网访问域名。

注意反代理oss的传输速度会受限于ecs的带宽,比如我的1m小水管
所以为了加快访问需要配置cdn加速,回头我会写一篇千牛云白嫖加速的教程回头再说

参考使用:官方教程 -> 官方教你省钱用反代理
在这里插入图片描述
箭头位置是我用的域名,根据你的服务器的实际情况自行选择.
在这里插入图片描述

oss-browser出现该问题

设置为cname访问。
在这里插入图片描述

问题解决

SDK

在这里插入图片描述

oss-browser

在这里插入图片描述

后记

于是就是这个问题我和阿里的售后工程师用工单说了一天,平均3小时回复一条,每次回答需要两条,第一条回复正在检查,第二条找原因,一来一回完整对话大约需要4到6小时=。=然后找错了三次原因……
所以得多看看SDK啊,我的问题出现在ossclient上,就是因为没好好看代码导致的。
JavaSDK的链接
2021年07月09日08:33:48

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值