Nginx反向代理自建CDN加速节点实现DNS智能解析

原文 标签 IT工具网 CDN反向加速网站 其他

如果需要便捷一点的可以直接用第三方提供的CDN加速服务,比如百度CDN七牛又拍云腾讯云阿里云等等服务商都有提供这类服务。但是前提条件是需要一定的成本,以及网站域名是需要BA才可以使用国内CDN服务商。

有没有办法,如果我们的网站域名没有BA也可以用来加速效果?有两种方法,第一种是将我们的网站搬到亚洲的计算机房,例如香港、新加坡、日本等地的服务器。速度肯定比美国快。二是我们可以使用反向解析构建自己的反向解析cdn,然后自己建立cdn节点,这比直接使用海外服务器要快。

我们可以利用DNSPOD等第三方解析工具提供的移动、联通、电信等分线路设定不同的解析节点。比如我们可以用电信速度快的服务器做电信节点、移动访问快的服务器做移动节点、联通访问速度快的做联通节点,然后三个节点都自动指向源站服务器网站。

1、准备工作


1、源站点网站

我们在准备部署CDN节点之前,我们需要有一个正在运行的源站点。这个我们可以任意找一个在使用的站点,我们目的就是希望将这个网站加速。

2、自备CDN服务器或是VPS

我们需要准备搭建CDN节点的服务器,这里我为了演示的方便,就只用一台服务器。因为多台的方法也是类似的,只是到时候DNSPOD解析的节点和备用节点智能切换解析而已,搭建一台其他就都一样。

2、架设Nginx环境


#一键Nginx安装
yum install wget -y
wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh
chmod +x nginx.sh && ./nginx.sh

3、配置反向解析

1、修改DNS配置

我们需要先修改CDN节点DNS,授权用来解析哪个域名和服务器。


#输入命令
vi /etc/hosts

添加一行:


#输192.168.0.100换成你源站IP
192.168.0.100 www.ojit.com

2、添加网站解析

我们需要在CDN节点服务器里创建站点,用来缓存数据的目录。


#创建缓存目录
mkdir -p /data/wwwroot/caches/www.ojit.com
#设置缓存目录权限
chown -R www:www /data/wwwroot/caches/www.ojit.com
#创建xiaoz.me.conf
vi /usr/local/nginx/conf/vhost/ojit.com.conf

ojit.com.conf中添加下面的内容,缓存目录/缓存时间请根据实际情况调整。

proxy_cache_path /data/wwwroot/caches/www.ojit.com levels=1:2 keys_zone=ojit:50m inactive=30m max_size=50m;
server {
listen 80;
server_name www.ojit.com;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass http://www.ojit.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 ojit;
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 12h;
}
}

根据上面的配置,我们需要将对应的目录修改成自己的。


/data/wwwroot/caches/www.laobuluo.com:为缓存目录
levels:指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层为2个字母。
keys_zone=laobuluo:50m:为缓存空间起个名字,这里取名为"laobuluo",后面的50m指内存缓存空间
inactive=30m:如果30分钟内该资源没有被访问则删除
max_size=50m:指硬盘缓存大小为50MB
proxy_cache_valid:指定状态码缓存时间,前面写状态码,后面写缓存时间

重启Nginx生效:


/usr/local/nginx/sbin/nginx -s reload

3、DNS分节点 解析

然后根据实际的需要在第三方DNS解析,你要设置全部用CDN节点或者是电信、移动、联通,还是其他线路,就指向对应IP。解析完毕之后,我们用第三方PING工具看看是不是生效,但是最好的办法是先全区域默认用节点IP,自己也看看是不是真实生效。


相关文章:

使用Nginx反向代理,自建CDN加速节点

短网址的用途及原理

tcpdump命令

为什么自我组织是直观的,但又具有挑战性

如何遍历一个JavaScript数组

为什么Java的Vector类被认为是过时的或者废弃的

document的状态onload/ready?

java - 如何测试一个数组是否包含指定的值