背景

最近我有一台用了3年的阿里云服务器即将到期,除了平时的数据备份,我想直接将整台服务器镜像导出到本地,方便以后查看相关数据和配置信息。阿里云支持将系统镜像导出到OSS,然后我们可以从OSS上下载镜像文件到本地,但是OSS的公网流量是要付费的,具体的资费详情可以看下图。后来在网上查相关资料,发现可以通过云服务器反向代理,通过云服务器来中转下载OSS镜像文件。因为OSS内网流量是免费的,正好我那台即将到期的云服务器还有几天,我就用来试试,遂写这篇文章记录下过程。

阿里云OSS流量价格

需要注意的是,通过服务器反向代理内网传输下载速率受限于服务器带宽,没法使用OSS加速传输服务。数据量大且不想等待的同学还是多花点OSS公网流量费吧,毕竟时间也是很宝贵的!

准备工作

将服务器镜像导出到OSS

  1. 在阿里云控制台,切换到云服务器 ECS页面,单击实例,选择服务器实例操作栏的”更多”按钮,弹出的菜单中选择“云盘和镜像”,单击“创建自定义镜像”,创建好后需要等待一段时间,待镜像创建完成后继续;

创建自定义镜像

  1. 在“镜像”页面,单击镜像后面的更多按钮,选择“导出镜像”按钮

导出镜像

填写对应的OSS

若未开通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 授权策略。

参考文档

  1. http://www.javashuo.com/article/p-ufnwbopy-nm.html
  2. https://help.aliyun.com/document_detail/39544.html
  3. https://www.zjh336.cn/?id=341
  4. https://help.aliyun.com/document_detail/31834.htm?spm=a2c4g.11186623.0.0.3f741cfc7zW9v3#concept-hh2-4tv-tdb
文章目录