最近购买了新一台ECS和OSS,利用OSS缓解带宽和空间问题,特进行分析解决这一难题。今天重点记录接入阿里云OSS,并利用反向代理,从内网访问OSS图片,减少流量产生的费用问题。
1、首先先开通阿里云OSS,进入后OSS后台中。
2、点击左上角“存储空间”后面的加号,创建一个空间,空间名称按照自己的来,但是注意“读写权限”必须选择“公共读”,是必须。
创建完空间以后可以看到这个空间的相关信息,这些信息对以后的设置至关重要。
同时,这里可以绑定自己的域名到空间,点击空间名称,在上面的菜单“域名管理”中增加,详细就不说了这块。
3、创建阿里云AcessKey。点击阿里云界面右上角的头像,选择“访问控制”,进入RAM管理。
点击“用户管理”,创建一个用户,选择“为该用户自动生成AccessKey”。
确定之后,用手机进行验证,验证完之后点击保存下载文件。一定要下载保存下来,因为这个密钥是显示一次,后期查不到,所以下载下来自己保存好。
对这个用户进行授权,授权时,选择以下三项权限给它,必须是这三项,否则后期连接不成功。
4、阿里云的部分完成以后,我们进行wp后台的操作。下载插件OSS Upload并安装,顺便感谢下插件的制作者XiaoMac。到目前为止版本号为4.3.7,可以从WP插件后台进行搜索下载,如果搜索不到可能作者发布了新版本,在审核中,我附上自己存放插件的链接,方便使用(文章最后免下载)。
5、后台安装插件后启用,点击设置,进入设置界面,按照我的截图进行设置,保证一点问题没有:
Access Key:阿里云RAM中创建的用户名
Secret Key:阿里云RAM中创建的用户名的密钥
上传路径:oss://qddsq/uploads(qddsq是我的空间名称)
访问链接:http://qddsq.oss-cn-hangzhou.aliyuncs.com/uploads(qddsq.oss-cn-hangzhou.aliyuncs.com是我的外网访问的Bucket 域名)
上传端点:oss-cn-hangzhou.aliyuncs.com(oss-cn-hangzhou.aliyuncs.com是我的外网访问的EndPoint地域节点,这个地方注意,如果oss区域和ecs区域一致,比如都是华东1,就可以设置Wie内网访问的链接,不耗费流量资费)
缩略图:选择第一个默认
本地备份:可选可不选,选择的功能是在ecs保存一份,不选择就只保存在oss
6、这样保存设置,然后上面有个测试,进行测试一番,测试成功就大功告成,不成功就根据提示,检查相应的项目,只要按照我说的创建阿里云RAM用户,基本不会遇到问题。
其他注意事项:
1、当我们全部设置完的时候,打开媒体库会发现一直在转圈,加载不出来,这时候我们可以用如下方法更新下媒体库,将媒体库中的图片文件等资源同步到OSS中并且重新建立媒体库-oss的关系。打开OSS Upload设置,在最底下有个“上传OSS缺失附件”,点击之后会提示需要十几分钟的时间,实际上看媒体库多少文件而定,一般一两分钟足矣,即可将原媒体库中的资源文件上传到oss空间并且重建媒体库关系。
2、如果细心会发现,部署完OSS之后,之前文章引用的图片或者缩略图还是媒体库中的,并不是OSS中的,部署完OSS只对以后发布文章上传图片附件等起作用,那么之前文章内的相关链接怎么办?这里我们通过处理下数据库中文章内容字段内的链接即可(数据库执行此代码前,建议备份一下数据库,安全第一)。sql代码如下:
- update tmp418a1c_posts set post_content = replace(post_content,'https://你的域名/wp-content/uploads/','https://oss域名或者绑定的oss域名/uploads/');
打开phpmyadmin工具或者其他工具也行,选中站点的数据库名,点击sql标签,将以上代码改好后放上去,执行
3、如果使用了timthumb缩略图的,那么还会涉及一个问题,增加了oss域名,就得增加外链域名,打开timthumb-config.php,在此处增加上oss的使用域名即可。
一、插件下载及安装
OSS Upload是有由国内一位大佬@XiaoMac在2016年开发的,插件也一直都在更新。安装方式有两种,一是直接在WordPress后台插件管理页面搜“OSS Upload”并安装即可。
另外一种方式是下载插件到本地,通过上传到服务器进行安装:
WordPress下载地址为:https://wordpress.org/plugins/oss-upload/
蜗牛789资源下载备用地址:https://xz.wn789.com/WordPress/oss-upload.zip
二、插件设置教程
1、设置插件之前,我们首先要开通阿里云对象存储OSS(关于阿里云对象存储OSS的开通及使用教程可以参照此文章【阿里云对象存储OSS】0元购价值121元的100G每年的外链储存包)及获取到“用户AccessKey”的AccessKey ID和Access Key Secret信息,关于如何获取可以参照下面图片。
2、接下来是启用插件并设置,比较关键的一步,请大家看清楚,按照图片提示项目进行填写即可,其他项目可以不填写。
3、填写完毕后保存,可以点击“测试一下”,如果提示如下图表示设置成功。
另外也可以上传一个图片测试一下看看是否正常上传到了阿里云对象存储OSS的对应目录。
以上信息来自于网络,作为OSS使用的参考,但是它是通过外网访问的形式进行访问的,但是这会产生一个费用的问题,作为一个穷站长,能省钱当然不选择花钱,所以,研究了一下,利用反向代理内网访问OSS文件,在同一地域下的ECS和OSS,内网访问是免费的。下面讲一下,本站如果利用反向代理进行内网访问OSS。
OSS Upload本站的配置方式:
我的环境是phpsutdy v8.1,apache 2.4.39,mysql。
在httpd.conf文件中配置开启以下模块:
mod_proxy.so mod_proxy_ajp.so mod_proxy_connect.so mod_proxy_http.so
www.awccc.com:80.conf中添加以下黄色的代码
<VirtualHost *:80> DocumentRoot "D:/Inetpub/begin_awccc" ServerName www.awccc.com ServerAlias ProxyRequests off <Proxy *> order allow,deny Allow from all </Proxy> ProxyPass /wp-content/uploads http://内网OSS地址/Inetpub/begin_awccc/wp-content/uploads ProxyPassReverse /wp-content/uploads http://内网OSS地址/Inetpub/begin_awccc/wp-content/uploads FcgidInitialEnv PHPRC "D:/phpstudy_pro/Extensions/php/php7.3.4nts" AddHandler fcgid-script .php FcgidWrapper "D:/phpstudy_pro/Extensions/php/php7.3.4nts/php-cgi.exe" .php <Directory "D:/Inetpub/begin_awccc"> Options FollowSymLinks ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted DirectoryIndex index.php index.html error/index.html </Directory> ErrorDocument 400 /error/400.html ErrorDocument 403 /error/403.html ErrorDocument 404 /error/404.html ErrorDocument 500 /error/500.html ErrorDocument 501 /error/501.html ErrorDocument 502 /error/502.html ErrorDocument 503 /error/503.html ErrorDocument 504 /error/504.html ErrorDocument 505 /error/505.html ErrorDocument 506 /error/506.html ErrorDocument 507 /error/507.html ErrorDocument 510 /error/510.html </VirtualHost>
重启Apache,配置成功
网上的教程中一直强调http://内网OSS地址/Inetpub/begin_awccc/wp-content/uploads
最后面要加“/",尝试了很多次都是不成功,后来不加,反而成功了。