快速跳转
- oss是什么?
- 为什么会出现这个问题?
- 如何解决问题?
-
- ossClient未设置setSupportCname
- 由于没有在oss控制台添加域名导致。
- 反代理访问oss出现该问题
- oss-browser出现该问题
- 问题解决
-
- SDK
- oss-browser
- 后记
oss是什么?
对象存储OSS 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。
为什么会出现这个问题?
- 由于ossClient设置错误导致。
- 由于没有在oss控制台添加域名导致。
- 由于没有进行反代理配置而导致。
- 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