Skip to main content

AWS S3

2.0.0版本开始支持AWS S3存储,只要是支持S3协议的都可以,并非一定要用AWS S3,您也可以自建minio等。

修改config.php

config.php中找到S3的配置,内容如下:

$config['s3']['region']	=	'us-east-1';
$config['s3']['endpoint']	=	'http://minio.xxx.com:9000';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'xxx';
  • region:如果有就填写对应的区域代码,如果没有,则不填写
  • endpoint:就是S3的接口地址,如果是自建的minio,一般是http://xxx.com:9000
  • key:如果是自建minio就是用户名
  • bucket:存储桶的名称

设置域名

在后台设置 - 系统设置 - 存储方案 - S3设置S3绑定的访问域名,注意,末尾需要带有/

注意S3的开关只对游客有效,如果是注册用户,并且设置了“注册用户默认存储策略”为S3,是否启用对注册用户都有效。

兼容存储

大部分对象存储都对AWS S3协议做了兼容,以下是部分存储的设置方法。

七牛云

七牛云后台 - 空间管理 - 新建空间 - 存储空间名称,名称根据规则填写即可,这个名称对应config.php里面的:$config['s3']['bucket'],存储区域选择离你图床最近的服务器,访问控制选择公开。

访问https://developer.qiniu.com/kodo/4088/s3-access-domainname获取“区域简称”和“访问 Endpoint”,对应关系如下:

  • $config['s3']['region']对应七牛的区域简称,比如:cn-south-1
  • $config['s3']['endpoint']对应七牛的访问 Endpoint,注意前面需要添加https,末尾不需要/,比如:https://s3-cn-south-1.qiniucs.com

访问https://portal.qiniu.com/user/key获取七牛的AccessKey/SecretKey对应关系如下:

  • $config['s3']['key']对应七牛的AccessKey
  • $config['s3']['bucket']对应七牛的存储空间名称

在ImgURL后台 - 系统设置 - 存储方案 - S3绑定域名填写七牛的空间绑定域名,注意末尾需要带有/,如下截图。

阿里云

登录阿里云OSS后台:https://oss.console.aliyun.com/bucket - 创建 Bucket,按照如下截图填写。

打开站点根目录下的config.php,找到S3的配置选项:

$config['s3']['region']	=	'us-east-1';
$config['s3']['endpoint']	=	'http://minio.xxx.com:9000';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'xxx';

继续打开阿里云文档:公共云下OSS Region和Endpoint对照表,对应关系如下:

  • region对应阿里云Region ID
  • endpointhttp://buket.外网Endpoint,比如http://bucket.oss-cn-hangzhou.aliyuncs.com
  • bucket:对应阿里云存储桶名称

继续打开阿里云:访问凭证管理 获取AccessKey ID 和 AccessKey Secret

  • key对应阿里云AccessKey ID
  • secret对应阿里云AccessKey Secret

完整的配置如下:

$config['s3']['region']	=	'oss-ap-southeast-1';
$config['s3']['endpoint']	=	'http://bucket.oss-ap-southeast-1.aliyuncs.com';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'bucket';

Backblaze B2

Backblaze是一家国外的备份、存储提供商,B2存储有免费10G的额度,价格非常低廉,如果存储1TB数据,仅需5$/月,如果有需要的可以前往:https://www.backblaze.com/ 进行注册。

登录B2后台 - 创建一个桶。

  1. 桶独特的名字:就是存储桶的名称
  2. 桶里面的档案是:公众
  3. 其它选项保持默认

找到刚刚创建的桶 - 点桶设定。

桶信息设置为{"cache-control":"max-age=604800"}这一行的意思是让浏览器缓存7天,不然每次都回源,浪费流量。

继续点生命周期的设置 - 选择“只保留了最后版本的文件”

B2后台点击左侧 - 账户 - 我的应用程序键 - 添加新的应用程序密钥。

按照下图填写。

创建成功后程序密钥只会出现一次,之一复制并保存下来,稍后使用。

接下来修改config.php填写S3配置信息,B2的配置参考如下:

/*------------------------------------- S3设置 -------------------------------------*/
$config['s3']['region']	=	'us-west-002';
$config['s3']['endpoint']	=	'https://s3.us-west-002.backblazeb2.com';
$config['s3']['key']	=	'xxx';
$config['s3']['secret']	=	'xxx';
$config['s3']['bucket']	=	'xxx';
/*------------------------------------- S3设置END -------------------------------------*/
  • key:对应B2的keyID
  • secret:对应B2的applicationKey
  • bucket:对应B2的存储桶名称

region/endpoint通过浏览B2的档案,获取到一个S3 URL地址,格式如:https://bucket.s3.us-west-002.backblazeb2.com/imgs/2022/03/28/00f925c6550c3154.jpg

那么region则为us-west-002,endpoint则为https://s3.us-west-002.backblazeb2.com