1. 本机环境

  • Ubuntu 16.04 (64位)
  • Apache2 2.4.18

2. 什么是对象存储 OSS

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。

你可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

其优点在于可靠性高,相对于 ECS 服务器的数据盘来说,费用较低,适合存储图片、视频等文件。

费用对比:

在 ECS 实例中额外挂载一块 500GB 数据盘需要花费 1785 元人民币。
购买一年 OSS 对象存储,500GB 空间仅需要 486 元人民币。

3. OSS 地理区域限制

说明:

  • 同地域的 ECS 可以通过内网访问 OSS。
  • 跨账户的 ECS 和 OSS 可以内网互连。
  • 不同地域的 ECS 与 OSS 无法通过内网访问。

例如:

位于深圳的 ECS 与同处于深圳的 OSS,可以通过内网直接访问,不收取流量费。
但深圳的 ECS 与北京的 OSS,只能通过外网访问,需要按量付费。

我们在购买 OSS 资源包时需要注意机房的地理位置。

4. 购买 OSS 资源包

微信截图_20190319015619.png

红框: 资源包类型选择 标准型存储包
绿框: 地域选择你 ECS 所在地,我的是华南1区(深圳)

选择你需要的容量,支付费用即可。

5. 获取 Bucket 内网地址 & 绑定自定义域名

5.1 获取 Bucket 内网地址

在 OSS 控制台中创建一个 Bucket

微信截图_20190319020559.png

红框: 新建一个 Bucket
绿框: 你的 Bucket 列表。

微信截图_20190319020204.png

Bucket 列表中找到刚刚创建的,你会看到下图所示的几个域名。
ECS 的经典网络访问(内网) 最后面对应的便是我们的 Bucket 域名

微信截图_20190319020409.png

5.2 Bucket 绑定自定义域名

因 OSS 的安全设置,当使用默认域名通过浏览器访问 OSS 中的图片或网页文件时,会直接下载。如果需要通过浏览器预览 Bucket 中的图片或网页文件,需为 Bucket 绑定自定义域名,方法如下:

WX20240322-182647@2x.png

6. 上传测试文件

微信截图_20190319022320.png

可以上传一张图片,作为我们的测试文件。


7. ECS 内网访问 OSS 原理

ecs_oss.png

8. 配置步骤

8.1 启用 Apache2 模块

需要启用以下模块:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

启用方法:

sudo a2enmod <model>   // 启用模块  
sudo a2dismod <model>  // 禁用模块   

示例:

sudo a2enmod proxy
sudo a2enmod proxy_ajp
sudo a2enmod proxy_balancer
···

8.2 Apache2 虚拟主机配置

我要将 oss.wujiayi.vip 反向代理到 Bucket 域名

Apache2 虚拟主机的搭建请参照我的另一篇教程:Linux环境下Apache2配置多个虚拟主机

8.3 配置反向代理

打开虚拟主机配置文件:

vim /etc/apache2/sites-enabled/000-default.conf

oss.wujiayi.vip配置中新增以下代码:

ProxyRequests Off
ProxyPass / http://xxxxx-xxxxx-cn-shenzhen-internal.aliyuncs.com/
ProxyPassReverse / http://xxxxx-xxxxx-cn-shenzhen-internal.aliyuncs.com/

SetEnv force-proxy-request-1.0 1  
SetEnv proxy-nokeepalive 1 

如下图:

微信截图_20190319021739.png

注意: Bucket 域名后面一定一定一定要加上 /,否则无法访问 OSS 资源。

8.4 重启服务器

/etc/init.d/apache2 restart

9. 验证

输入域名:xxx.xxxx.xxx/1.jpg

微信截图_20190319022549.png

10. 图片链接直接下载的问题

Bucket 权限设置为公共读

11. 使用 HTTPS 访问

在域名管理上传 HTTPS 证书。

12. 参考链接



扫描二维码,在手机上阅读

标签: none

添加新评论