alist-org / alist

🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。
https://alist.nn.ci
GNU Affero General Public License v3.0
42.13k stars 5.46k forks source link

对象存储OSS如果配置自定义Host(此host走CDN)时下载文件不会自动增加签名参数 #6218

Closed 2545504198 closed 3 months ago

2545504198 commented 6 months ago

Please make sure of the following things

AList Version / AList 版本

v3.32.0

Driver used / 使用的存储驱动

对象存储OSS

Describe the bug / 问题描述

如题,如果对象存储OSS配置私有那么使用CDN中转(因为CDN流量便宜),配置了Host后不会增加签名参数,但是不配置Host时是有的

Reproduction / 复现链接

https://ecs.eryun.top/backup-NAS/%E4%B8%AA%E4%BA%BA/%E7%AC%94%E8%AE%B0/%E4%B8%B4%E6%97%B6.md

Config / 配置

image

Logs / 日志

No response

hailcar commented 6 months ago

一直下载失败,我也在查这个问题,看到你这才明白过来。 变通方法,如果你的域名是a.com, 桶的名字 b, 自定义host为 b.a.com 存储桶填b, endpoint填 a.com, 自定义host不填,我可以下载成功

2545504198 commented 6 months ago

一直下载失败,我也在查这个问题,看到你这才明白过来。 变通方法,如果你的域名是a.com, 桶的名字 b, 自定义host为 b.a.com 存储桶填b, endpoint填 a.com, 自定义host不填,我可以下载成功

我试过不填Host也就是使用默认域名是正常的,但是一旦写了Host(走CDN流量会便宜点)就不会自动添加参数了,桶是私有的(为了安全),就没办法使用了

hailcar commented 6 months ago

按照我的方法填它不就走cdn了么

2545504198 commented 6 months ago

按照我的方法填它不就走cdn了么

不要这样操作,这玩意会把你私有桶变成公开桶

我好像知道咋回事了,你用的阿里云的的话看下你CDN配置里面下面三项开了没有,没开的话只能支持公共读,加密参数Alist里面应该是过去了,我现在填Host能下载了 image

2545504198 commented 6 months ago

还有你为啥用CF代理OSS的,那玩意又不会更便宜

hailcar commented 6 months ago

香港aliyunoss,走cloudflare,不是免流量费用么

2545504198 commented 6 months ago

香港aliyunoss,走cloudflare,不是免流量费用么

好吧,触及盲区了

hailcar commented 6 months ago

你图里域名啥信息透露的有点多估计要换一个桶了

2545504198 commented 6 months ago

应该没事吧,设置的私有桶

2545504198 commented 6 months ago

按照我的方法填它不就走cdn了么

我好像知道咋回事了,你用的阿里云的的话看下你CDN配置里面下面三项开了没有,没开的话只能支持公共读,加密参数Alist里面应该是过去了,我现在填Host能下载了 image

不对,还是有问题,配置的那几个CDN选项是免认证用的,还以为是传参问题

hailcar commented 6 months ago

那你还是按照我说的试试吧

2545504198 commented 6 months ago

那你还是按照我说的试试吧

我试过,认证过不去,签名参数倒是有,但是没用 image image

hailcar commented 6 months ago

你的桶不是那个eryuns-ecs 你的cdn域名应该是eryuns-ecs.eryun.top

anwen-anyi commented 6 months ago

https://ecs.eryun.top/backup-NAS/%E4%B8%AA%E4%BA%BA/%E7%AC%94%E8%AE%B0/%E4%B8%B4%E6%97%B6.md

这是你对象存储的域名吧? 这个加密和AList有什么关系嘛,你这是真实链接吖而且也没办法加吧,加了你也没法用

你应该看AList的复制链接才对,我添加的CF R2对象存储也使用了自定义host,复制链接是加密的没问题吖

image

2545504198 commented 6 months ago

不是的,这个只是示例情况用的,实际是跳转之后参数是空的,就跟这个链接一样的性质

2545504198 commented 6 months ago

你的桶不是那个eryuns-ecs 你的cdn域名应该是eryuns-ecs.eryun.top

试了一下,跟之前是一样的签名错误

2545504198 commented 6 months ago

不是的,这个只是示例情况用的,实际是跳转之后参数是空的,就跟这个链接一样的性质

https://alist.eryun.top/ 可以打开试试

hailcar commented 6 months ago

现在的参数截图让我看一下

2545504198 commented 6 months ago

image image

现在的参数截图让我看一下

hailcar commented 6 months ago

endpoint错了, endpoint填你自己的域名eryun.top

hailcar commented 6 months ago

这个方法原理就是 cdn把 桶名.eryun.top cname到了 桶名.oss-cn-beijing.aliyuncs.com

2545504198 commented 6 months ago

endpoint错了, endpoint填你自己的域名eryun.top

现在改了,host也去掉了,你打开https://alist.eryun.top/试试,签名是有了,但是是错误的

hailcar commented 6 months ago

我看了我的有中文会encode掉

2545504198 commented 6 months ago

我看了我的有中文会encode掉

跟这个关系不大吧,默认域名就能直接使用,不论是不是中文

hailcar commented 6 months ago

我没启用签名,移除bucket和添加filename没选

这些我启用了带中文的也都没问题啊

2545504198 commented 6 months ago

我没启用签名,移除bucket和添加filename没选

那估计确实跟这些选项关系不大,主要还是自定义Host没加签名的问题

hailcar commented 6 months ago

我这个方法自定义host不用加,留空

2545504198 commented 6 months ago

我这个方法自定义host不用加,留空

我知道,试过好几次了,报错签名错误

hailcar commented 6 months ago

建议对照一下 变通方法,如果你的域名是a.com, 桶的名字 b, 自定义host为 b.a.com 存储桶填b, endpoint填 a.com, 自定义host不填 之前不是桶错了么

2545504198 commented 6 months ago

image 现在我配置成这样了,你试一下 https://alist.eryun.top/

hailcar commented 6 months ago

最后区别 我直接挂载在根目录下面,下载之后没有多出一个文件夹 你也试试 再不行也没办法了

hailcar commented 6 months ago

还有存储桶填其他的应该也没问题,只要桶名+域名能cname到指定域名就没问题

hailcar commented 6 months ago

你的oss是不是没有绑定域名啊eryuns-ecs.eryun.top 直接访问出来的是

<HostId>eryuns-ecs.oss-cn-beijing.aliyuncs.com</HostId>

我的是<HostId>自己的域名</HostId>
2545504198 commented 6 months ago

域名绑定过,而且也CDN解析了 暂时等修复吧,先用默认的用着

longsays commented 5 months ago

香港aliyunoss,走cloudflare,不是免流量费用么

正常填,设置私有桶,鉴权那里选IP授权就完事了,把cloudflare的IP全部加白名单 就这一段 173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22,2400:cb00::/32,2606:4700::/32,2803:f800::/32,2405:b500::/32,2405:8100::/32,2a06:98c0::/29,2c0f:f248::/32 参见https://www.cloudflare.com/zh-cn/ips/

xhofe commented 5 months ago

自定义host不是就是不用添加签名参数的吗

longsays commented 5 months ago

自定义host不是就是不用添加签名参数的吗

对方使用私有桶是需要签名的,桶的访问签名,不管是alioss的IP授权,还是借助cf的URL重定向加签名

也可以用云自己的cdn默认签名,但我们这种都是搞cf流量联盟免流的

aoxue commented 5 months ago

我也遇到了同样的问题,阿里云Bucket设置读写权限是私有的,如果设置了自定义域名,签名就没有了,不设置链接是正常的。 因为我需要用来存放apk文件,阿里云oss规定必须使用自定义域名来访问,这个BUG会在近期修复吗? https://api.aliyun.com/troubleshoot?q=0048-00000200

longsays commented 5 months ago

我也遇到了同样的问题,阿里云Bucket设置读写权限是私有的,如果设置了自定义域名,签名就没有了,不设置链接是正常的。 因为我需要用来存放apk文件,阿里云oss规定必须使用自定义域名来访问,这个BUG会在近期修复吗? https://api.aliyun.com/troubleshoot?q=0048-00000200

你如果使用海外地区用CF cdn可以用上面的IP鉴权 如果使用国内地区,可以用阿里云自己的cdn,cdn上开启私有桶鉴权,这样走cdn流量还比桶直连价格低

2545504198 commented 5 months ago

是这个说法,但是对于私有分享的话这样就成了公开访问了,不如直接公开桶,当然我也仅仅说是这个,大部分人既然是分享基本就不会使用私有权限

longsays commented 5 months ago

是这个说法,但是对于私有分享的话这样就成了公开访问了,不如直接公开桶,当然我也仅仅说是这个,大部分人既然是分享基本就不会使用私有权限

还是不一样吧,设置私有桶主要是防止他人刷源桶,cdn随便别人刷 而且知道私有分享的地址自然也就有鉴权信息,区别不大,就是被刷的时候带鉴权可以过期 当然,alist程序能自己提供自定义host鉴权更好,祝好

stale[bot] commented 3 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

github-actions[bot] commented 3 months ago

Hello @, this issue was closed due to inactive more than 52 days. You can reopen or recreate it if you think it should continue. Thank you for your contributions again.