ECS上nginx搭建反向代理通过内网访问阿里云OSS服务

对于付不起钱的小伙计,为了给公司省钱,想尽一切招数。今天就来分享一个使用阿里云OSS存储搭配CDN使用的网站服务器部署方法。

简介

阿里云OSS

阿里云提供的一种文件存储方案,和我们以前接触的百度云BCS和新浪云的Storage是一个道理,即文件的云端存储方案。一般而言,OSS只存储网站所需要的静态文件,而不存储程序文件。例如将网站的图片、视频、脚本、样式等文件存储在OSS,同时,OSS实际上有点类似我们以前使用的第三方服务商提供的相册,OSS上的文件,阿里云会给一个url让你可以直接使用。在依托OSS在windows或mac上的客户端,管理OSS上的附件资源也很方便。总之,OSS是帮助网站存储文件的一项服务。

我们已经有自己的服务器了,为什么还要将文件传到OSS上,然后通过阿里云提供的url来使用附件呢?实际上我们现在的服务端开发工作中,一定要有云的概念,即我们在搭建服务器环境,设计服务端架构的时候,必须以云计算出发去设计和实施。这是我们这几年来服务端发展的结果。(当然,如果一个网站实在太小了,没多少人访问,也可以忽视。)将网站运行在ECS(云服务器)上,同时,把一些大块的文件(图片、视频)放在OSS,可以有效的降低访客访问(下载)这些文件时,对服务器带来的IO压力,让服务器运行起来更加流畅。这是我们使用OSS服务的最根本原因。除此之外,使用OSS还可以加快附件的传输速度,用户可以明显感觉图片、视频加载变快,结合CDN,可以在文件的访问路径上进一步优化。相对于通过加服务器的存储空间的话费,使用OSS还可以省钱。

CDN的作用

CDN这个词应该很多人都略知一二。我们就不解释其运作原理,直接说它都有什么好处。CDN通过网络途径,直接解决了网络访问不畅的问题。在使用CDN之前,你直接将域名解析到你的服务器,一个用户访问你的网站必须通过自家路由器,再到区域电信运营商,再到主干网,再通过网络路由、DNS找到你的服务器,再把需要的资源下载到浏览器进行展示。中间任何一个环节的网络不好,都会导致网站访问变慢,甚至访问失败。而使用CDN之后,你把域名解析到CDN提供的一个中间地址,再再CDN服务商处设置你的服务器真实IP。当用户访问你的网站的时候,CDN服务商把你的网站资源缓存在自己的服务器上,并把距离访客最近服务器上的缓存返回给访客,这样直接加快了网站的访问速度。在七牛提供的服务中,我们遇到过一个词,叫“镜像”,把你的网站镜像到七牛,实际上,这个过程就是CDN了,所以,这里的镜像等于CDN。

除了上述的主要功能外,CDN近年来还增加智能解析、SEO、防DDOS等服务。所以,现在的网站,不用CDN,都不好意思说自己的网站多牛逼。

1.通过内网获取OSS中的文件在外网中返回

在OSS的收费策略中,存储、外网访问、API调用这三项都要收费,其中外网访问的费用还挺高。CDN也要收费,OSS外网访问也要收费,总之阿里云是赚翻了。但是,在OSS的收费策略中注明了:内网访问免费。也就是说,如果我们的使用阿里云的ECS通过内网去请求OSS中的资源,是不收费的。所以,我们现在要解决的问题就是,通过内网去请求的资源,怎么在外网中返回给访客呢?

服务器和OSS Bucket必须在同一区域

这是一个前提条件,也就是要构建“内网”这个组合。如果你的网站服务器购买的是杭州的,在创建Bucket的时候,就要选择杭州,如果是深圳的服务器,创建时就要选择深圳的。

使用ningx的代理设置

nginx除了作为web服务器之外,另外一个重大功能就是作为代理服务器。这种轻便又多功能的特性,应该是nginx身上最大的闪光点了。那么怎么来实现这种代理呢?其实很简单。

打开你的nginx的配置文件,例如nginx.conf,如果你对这个配置文件已经有一定的了解,那么应该可以很容易区分http和server两个区块的区别。我们要做的,是在其中一个server中增加一些配置项。具体是哪一个server,就看你绑定域名的时候是怎么安排的。总之,核心的配置如下:

server {
    listen 80;
    server_name oss.test.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test/uploads/;
    location / {
          expires 3d;    #缓存3天
          rewrite /(.+)$ /$1 break;    #用rewrite进行url重写,使用户访问的url后缀,也传递到OSS上。
          proxy_pass http://test.oss-cn-shenzhen-internal.aliyuncs.com;    #反向代理,填写Bucket的内网访问域名,如果ECS实例与Bucket不在同一个地域,需填写外网域名;
    }
}

红色的字体是需要新增的配置,上面蓝色的字体,需要在OSS Bucket概览页获取,修改nginx的配置之后,reload服务。

配置好后检测nginx配置是否有误,然后重启nginx。重启后直接查看效果

nginx -t
service nginx restart;

 

2.部署CDN提速网站

为了省钱我们可以考虑去使用一些效果还可以但免费的CDN(或者收费很便宜的也行)。CDN的部署很简单,我们先注册一个CDN,将上面解析到服务器IP的static域名重新解析到CDN服务商提供的地址,再在CDN后台将源地址IP设置为我们自己的服务器IP。这样就轻松搞定。

posted @ 2019-04-11 17:50  一个人的孤独自白  阅读(7709)  评论(1编辑  收藏  举报