背景
最近我有一台用了3年的阿里云服务器即将到期,除了平时的数据备份,我想直接将整台服务器镜像导出到本地,方便以后查看相关数据和配置信息。阿里云支持将系统镜像导出到OSS,然后我们可以从OSS上下载镜像文件到本地,但是OSS的公网流量是要付费的,具体的资费详情可以看下图。后来在网上查相关资料,发现可以通过云服务器反向代理,通过云服务器来中转下载OSS镜像文件。因为OSS内网流量是免费的,正好我那台即将到期的云服务器还有几天,我就用来试试,遂写这篇文章记录下过程。
需要注意的是,通过服务器反向代理内网传输下载速率受限于服务器带宽,没法使用OSS加速传输服务。数据量大且不想等待的同学还是多花点OSS公网流量费吧,毕竟时间也是很宝贵的!
准备工作
将服务器镜像导出到OSS
- 在阿里云控制台,切换到云服务器 ECS页面,单击实例,选择服务器实例操作栏的”更多”按钮,弹出的菜单中选择“云盘和镜像”,单击“创建自定义镜像”,创建好后需要等待一段时间,待镜像创建完成后继续;
- 在“镜像”页面,单击镜像后面的更多按钮,选择“导出镜像”按钮
若未开通OSS,需要先开通OSS业务,并创建 Bucket。导出到OSS后,在阿里云控制台“对象存储 OSS”页面单击对应的 Bucket,即可看到以下信息,等会我们需要将以下对应地址配置到Nginx中。
Nginx配置
本人的服务器使用的是 Nginx,所以这里仅以 Nginx 配置为例,其他 Web 应用服务器请自行查阅相关资料。
server {
listen 80;
server_name xxx.yourdomain.com;
index index.html index.htm;
location / {
proxy_pass http://oss-cn-qingdao-internal.aliyuncs.com;
# 这里的host,填阿里云OSS分配的 Bucket 内网域名
proxy_set_header Host your-bucket-name.oss-cn-qingdao-internal.aliyuncs.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50000m;
#rewrite /(.+)$ /$1 break;
proxy_redirect off;
}
}
然后重启 Nginx,使用 xxx.yourdomain.com 即可访问到 OSS 对应的 Bucket 目录下。如果访问被禁止,需要在 OSS 控制台配置 Bucket 授权策略。