背景

杞人忧天的我,总感觉自己的博客搭建在国内主机上,同时使用的是国内的CDN加速服务,如果有外国友人或者经常坐飞机出去的同志,可能访问会有点困难。(真的是杞人忧天)。于是,我想到了自己搭建一个境外的CDN服务器。

工具准备

  • Nginx公网服务器一台
  • 域名一套

具体操作

配置域名解析

我是用的是腾讯云的域名解析服务。在此,我想要搭建域名www.vvzero.com的CDN,根据我的需求,我设置了如下的解析:

这里表示,如果访问者在国外,那么将会解析到我的国外的服务器上。否则,就解析到国内的CDN。

配置服务器

在Nginx配置文件库conf.d/下新增一个文件。我将它命名为www.vvzero.com.conf。文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
proxy_cache_path /var/www/caches/www.vvzero.com levels=1:2 keys_zone=vvzero:128m inactive=2880m max_size=128m;
server {
listen 443 ssl;
server_name www.vvzero.com;
charset utf-8,gbk;

ssl on;
ssl_certificate /etc/ssl/certs/1_www.vvzero.com_bundle.crt;
ssl_certificate_key /etc/ssl/private/2_www.vvzero.com.key;

location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://www.vvzero.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache vvzero;
proxy_cache_valid 200 304 30m;
proxy_cache_valid 301 24h;
proxy_cache_valid 500 502 503 504 0s;
proxy_cache_valid any 1s;
proxy_cache_min_uses 1;
expires 48h;
}
}

重要解释:

  1. 如果不需要使用https,可以把SSL的配置语句删除,并只监听80端口。
  2. /var/www/caches/www.vvzero.com是缓存目录位置,这个需要手动创建,至于权限,默认sudo创建的即可。
  3. keys_zone=vvzero:128m相当于给你的缓存起了个名字,并设置最大可用的内存空间。这里,我起的vvzero名字必须要与下面的proxy_cache相同。
  4. proxy_pass https://www.vvzero.com;设置原站主机地址。为了不让它解析到自己的ip上,我们需要修改此CND服务器的/etc/hosts文件。在文件中添加一条记录,把域名解析到源站主机,比如:0.0.0.0 www.vvzero.com
  5. expires 48h;这里设置的是缓存过期时间。
  6. 其他参数可以自己了解。

然后,就大功告成啦!

效果展示

http://www.17ce.com/site/http/201804_4c0d99b24986e887abd69addb9b25b9c.html

挺可以了,可以看到国外都解析到了我刚刚部署的CDN节点上,国内不受影响。