用廉价的方案来加速博客访问——简单的nginx转发

国内用户访问githubpage太慢了,咋整?

有几个常见的方案。

  1. CDN加速
  2. 部署到国内平台,比如gitee
  3. 部署到自己的云服务器
  4. 服务器转发

用那种方案比较好?

这些方案我都尝试过,我把自己的感受记录在此,希望对你有帮助。

CND加速

理论上效果很好,实际上差强人意。

作为一个穷人,我尝试过用CloudFlare。从最终效果上来讲,在国内用CloudFlare也不见得会有多大的提升。更进一步的,用CloudFlare的服务还有一些配置(比如DNS服务器啥的)需要修改,我个人是比较专一于阿里云的,所以这并不讨喜。

当然如果你有点小钱,用国内大厂的付费CDN,那自然不在这篇文章的讨论范围之内。

我为什么专一于阿里云?单纯的因为先入为主罢了。

部署到国内平台……

那还是算了吧。很久以前我曾经尝试过用gitee的服务。我真他妈是醉了,一个静态页面托管,想要实时更新,对不起,那是别人的vip服务。这方面我只能说我国领先世界一万年。

特别不建议用gitee的服务。也许你可以找到更好的国内静态资源托管服务,但是我猜你也不想输入手机号码身份证实名认证,再加所上传的资源归服务商所有吧。(笑)

我并没有针对gitee,我是说国内互联网环境就这样了。

部署到自己的云服务器

不失为一种好方案。以阿里云的轻量应用服务器为例,有个什么开发者计划?啥啥啥的,一年一百块,峰值带宽5M,部署一些日访问量100不到(甚至更多)的小型站点,完全够了。

部署在国内云服务器,地区选对了,相较于githubpage,能极大的提升用户体验。

奥对了,别太高估了你的站点热度了,说真的,没人看的,不需要那么好的服务器。(这里吐槽一下工作单位,有机会新开一篇文章)

至于我为什么不把静态资源放服务器上,因为我单纯的喜欢github。顺便还可以刷刷贡献量

服务器转发

是我现在采用的方案。根据我的历史经验,阿里云的服务器访问github相当的快,理所当然的,我可以简单的配置nginx转发,增强用户体验。

大致来讲,流程从:用户直接访问githubpage 变成了 用户访问阿里云服务器,服务器转发到githubpage,并返回。配置也非常的简单,在服务器装上nginx,加一个server块即可。

configuration
1
2
3
4
5
6
7
8
9
10
11
server {
server_name jiangkerman.cc;

location / {
proxy_pass https://blog.jiangkerman.cc; # 之前githubpage的自定义域名是blog.jiangkerman.cc
proxy_set_header Host blog.jiangkerman.cc; # 使用GitHub Pages的实际主机名
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

奥对了,建议配置https,图省事儿的话你可以参考这篇文章

我们可以来对比一下实际效果。如下图,左边是直接访问githubpage的加载速度,右边是阿里云服务器中转的加载速度……在某些资源上是天壤之别。你可以自己访问试试。

两者都是完全没有缓存的情况下的测试结果,可以得出哪些结论呢?

  1. 直接访问用了53.24s全部加载完成(主要是有一张大图),中转后用了6.02s全部加载。
  2. 两张图,分别是566k和15k,直接访问需要49.53s和1.06s,中转后只需要431ms和210ms。离谱哈。
  3. 其他小文件,也有肉眼可见的提升。

我猜你也不想自己的一张图片,要别人等将近一分钟才能加载出来吧。(笑)

后记

之前我一直觉得,我放GitHubPage上,别人加载慢,是他的问题,不是我的问题。直到后来我把一些资源分享给好友,好友说图片打不开、加载太慢了。次数多了,我渐渐的就意识到了,自己也不能太偏激,啥事儿都让别人魔法上网解决。所以有了这次调整。

就像docker被墙之后,国内某些厂商也为自己的镜像建立了镜像站一样。

😊国内这网络环境是真的稀碎——jiangKerman