外部存储 ImgURL Pro目前支持本地、Backblaze B2、腾讯云COS、FTP、七牛云等存储方式。 存储方案 ImgURL Pro目前支持本地、Backblaze B2、腾讯云COS、FTP、七牛云等存储方式(后期可能将支持更多) 在后台 - 系统设置 - 存储方案可以看到所有存储设置。 存储方案选择 本地:上传效率最好,但是会占用服务器磁盘空间和网络资源 Backblaze B2:服务器在美国,如果你图床服务器也在美国可以使用B2,如果图床安装在国内服务器速度会非常慢 腾讯云COS:建议国内服务器使用 FTP:比较灵活,建议选择和图床服务器较近的区域。比如你图床安装在国内服务器,FTP建议也是国内的。 七牛云:免费10G空间和10G下载流量 注意事项 本地存储和FTP存储,域名设置后面没有斜杠(/)外,其余的存储在设置的时候必须有斜杠(/),否则会存在异常。 其它说明 如果游客上传设置为“否”,则游客无法选择该上传方式,管理员依然可以选择。 如果开关为“关闭”,则无论是管理员还是游客都无法选择该上传方式。 本地存储 本地存储图片是保存在服务器的,会占用服务器磁盘空间、带宽等资源,该存储是默认的(无法关闭上传),一般不需要额外设置,如有需要可以单独为本地存储绑定一个CDN域名。(注意:本地存储的域名最后没有斜杠(/)) 绑定CDN域名思路 假设您创建了一个站点A,并将图床安装到了A,如果希望图片通过CDN域名来访问,只需要做如下操作。 在站点A额外绑定一个域名B 然后到第三方CDN服务商(如CloudFlare)对域名B启用CDN加速 最后打开ImgURL后台 - 系统设置 - 存储方案 - 本地 - 填写B域名并启用 Backblaze B2 关于Backblaze Backblaze是一家国外的备份、存储提供商,B2存储有免费10G的额度,价格非常低廉,如果存储1G的数据,仅需5$/月,如果有需要的可以前往:https://www.backblaze.com/ 进行注册。 获取密钥 登录之后在后台B2云存储 - 创建一个桶 - 权限设置为公开,如下图。(如果您打开不是中文界面,可以在B2网页右下方设置为中文语言) 接下来我们需要获取4个重要的参数,用于B2 API设置。 打开后台B2云存储 - App Keys,同时点击“生成新的主应用程序密钥”(只会出现一次,请妥善保存) 上面我们已经获取到“KeyID”和“主程序密钥”2个参数了,继续切换到“B2云存储” - 桶,可以查看到刚刚创建的桶“imgurl”有一个“桶身份证”把它记录下来。 接下来点击“上传/下载按钮”往里面随便传一个文件,点击文件详情,获取友好的URL地址,比如:https://f002.backblazeb2.com/file/imgurl/imgs/2019/06/a91bf049535ce20a.jpg 我们只需要https://f002.backblazeb2.com/file/imgurl/ 这部分就行了,这样我们4个参数已经获取完毕,分别是是:<主程序密钥><桶身份证><友好URL> 修改配置文件 打开站点根目录的config.php ,填写对应的信息,只需要填写下面三项(其余选项不填写): $config['b2']['b2_app_key_id']:对应KeyID $config['b2']['b2_app_key']:对应主程序密钥 $config['b2']['b2_bucket_id']:对应桶身份证 启用B2存储 打开ImgURL后台 - 系统设置 - 存储方案 - 对B2存储进行设置,绑定域名填写上面获取到的“友好URL”,并开启允许上传。 启用CloudFlare CDN 如果需要对B2存储启用CloudFlare CDN可以参考:Backblaze B2,低价的对象存储,支持接入CloudFlare CDN 注意事项 绑定域名末尾需要带有斜杠(/) B2服务器在美国,适用于您图床也是安装在美国服务器上,否则请求接口延迟会非常高,会大大降低图片上传速度,同时还影响上传成功率。 腾讯COS COS是腾讯提供的对象存储服务,全称为Cloud Object Storage,COS 新建bucket 在腾讯云后台 - 根据提示创建存储桶 - 存储桶权限为“公有读私有写”。 获取密钥 直接访问:https://console.cloud.tencent.com/cam/capi 获取需要的密钥信息,如果没有自行点击新建密钥即可。 这个页面我们需要3个参数,分别为把它保存下来。 获取COS地域 在创建存储桶的时候会让你选择存储桶的地区,对应地区域名列表,请参考:https://cloud.tencent.com/document/product/436/6224 假如存储桶地区为“广州(华南)”我们需要的地址为“cos.ap-guangzhou.myqcloud.com” 修改配置文件 打开站点根目录下的config.php 找到腾讯COS设置,填写对应的信息: $config['cos']['app_id']:对应APPID $config['cos']['access_key_id']:对应SecretId $config['cos']['access_key_secret']:对应SecretKey $config['cos']['host']:对应可用地域(比如:cos.ap-guangzhou.myqcloud.com) 启用腾讯COS 打开ImgURL后台 - 系统设置 - 存储方案 - 腾讯COS - 设置COS绑定域名并进行启用即可。 注意事项 绑定域名末尾需要带上斜杠(/) 写到config.php 配置的时候bucket不需要带有-数字 在新建bucket的时候,地区请选择和您图床服务器较仅的区域。比如您图床安装在广州的服务器上,那么创建bucket的时候区域建议选择广州。 假如您图床安装在国外的服务器,但是新建一个国内区域的bucket,将导致上传成功率和速度下降。 FTP 在使用FTP存储之前,请确保已经有正常可用的FTP服务,同时确保PHP已经支持FTP组件,可以在ImgURL Pro后台首页查看是否支持FTP组件。 适用场景 FTP存储方式非常灵活,可以将图片存储在你想要的服务器上。比如您图床安装在A服务器,绑定了A域名,但是希望将图片上传到B服务器,使用B域名来访问图片,您只需要: 在B服务器新建一个站点,绑定B域名 在B服务器开设一个FTP账号,目录指向到B站点 修改config.php 配置文件,设置FTP信息 在ImgURL后台 - 系统设置 - 存储方案 - FTP,填写B域名的信息,并启用即可 修改配置文件 打开站点根目录下的config.php文件,找到FTP设置,填写FTP地址、账号、密码等信息。 $config['ftp']['hostname']:FTP连接地址(可以是IP或域名) $config['ftp']['username']:FTP用户名 $config['ftp']['password']:FTP密码 启用FTP存储 在ImgURL后台 - 系统设置 - 存储方案 - FTP,填写FTP绑定域名,并启用。 宝塔面板无法上传的问题 修改宝塔配置pure-ftp配置文件 /www/server/pure-ftpd/etc/pure-ftpd.conf 将 TLS 1 改成 TLS 0 然后重启下FTP: /etc/init.d/pure-ftpd restart 注意事项 FTP存储绑定域名末尾没有斜杠(/) 不支持docker搭建的FTP 七牛云 自ImgURL Pro v1.1之后开始支持七牛云存储 新建存储空间 在七牛云后台 - 对象存储 - 新建存储空间,如下截图。 存储空间名称:随便填写(只要符合要求就行) 存储区域:国内服务器建议选择、华东、华北、华南 访问控制:公开空间 获取密钥 后台 - 个人中心 - 密钥管理,或者登录后直接访问:https://portal.qiniu.com/user/key 获取AccessKey/SecretKey,如下图。 修改配置文件 打开 config.php 找到七牛云设置,填写对应信息。 $config['qiniu']['AccessKey']:对应七牛AccessKey $config['qiniu']['SecretKey']:对应七牛SecretKey $config['qiniu']['bucket']:对应七牛存储空间名称 $config['qiniu']['up_host']:根据你空间存储区域参考:https://developer.qiniu.com/kodo/manual/1671/region-endpoint 获取,比如你创建空间选择的华南,那么此项对应地址为:http://up-z2.qiniup.com 启用七牛云存储 打开ImgURL后台 - 系统设置 - 存储方案 - 七牛云 - 设置七牛云空间绑定域名并进行启用即可。 注意事项 绑定域名末尾需要带上斜杠(/) 在新建bucket的时候,地区请选择和您图床服务器较近的区域。比如您图床安装在广州的服务器上,那么创建存储区域的时候区域建议选择华南。 假如您图床安装在国外的服务器,但是新建一个国内区域的bucket,将导致上传成功率和速度下降。 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 endpoint:http://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后台 - 创建一个桶。 桶独特的名字:就是存储桶的名称 桶里面的档案是:公众 其它选项保持默认 找到刚刚创建的桶 - 点桶设定。 桶信息设置为{"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