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

那有没有一个办法,如果我们网站域名没有BA也可以使用到加速效果呢?有两个办法,第一就是将我们的网站搬迁至亚洲机房,比如香港、新加坡、日本等服务器,速度肯定是相比美国快一些的。第二就是我们可以利用反向解析的方式,自建反向解析CDN,然后自己来就架设CDN节点,这样会比直接用海外服务器快。

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

应该是在去年的时候有看到XIAOZ同学分享的这篇文章(https://www.xiaoz.me/archives/8775)有介绍到可以实现多线路节点的智能解析,且笔者前天又看到QI同学也针对这个教程做的整理(https://wzfou.com/nginx-cdn/)。在这篇文章中,笔者也将学习他们的架设方法自己也亲手看看如何配置的,万一以后有需要也可以自己搭建,先模拟测试是否可行。

第一、准备工作

1、源站点网站

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

2、自备CDN服务器

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

第二、架设Nginx环境

架设Nginx环境很简单,可以用我们熟悉的LNMP一键WEB安装包安装自带的,或者直接用XIAOZ提供的一键脚本,但是只能在Centos7或者Deebian8系统中才可以执行。

yum install wget -y
wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh
chmod +x nginx.sh && ./nginx.sh

我们需要在CDN节点服务器先安装有Nginx环境。

第三、配置反向解析

1、修改DNS配置

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

vi /etc/hosts

添加一行:

xxx.xxx.xxx.xxx www.laobuluo.com

格式是"网站所在服务器IP 需要使用CDN域名"

2、添加网站解析

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

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

如果我们是用LNMP一键包环境的,那直接用自带的命令创建站点,这里我们没有用到一键包,所以得手工创建缓存目录和站点域名绑定。

proxy_cache_path /data/wwwroot/caches/www.laobuluo.com levels=1:2 keys_zone=laobuluo:50m inactive=30m max_size=50m;
server {
listen 80;
server_name www.laobuluo.com;
charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass http://www.laobuluo.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 laobuluo;
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,自己也看看是不是真实生效。

4、检查缓存

可以看到CDN节点服务器有缓存生成。

第四、实现HTTPS解析配置

以上我们是实现的HTTP解析指向,如果是HTTPS的话,我们是需要在配置文件.conf中配置HTTPS的。

proxy_cache_path /data/wwwroot/caches/www.laobuluo.com levels=1:2 keys_zone=laobuluo:50m inactive=30m max_size=50m;
server {
listen 443 ssl http2;
ssl_certificate /data/ssl/www.laobuluo.com/www_laobuluo_com.crt;
ssl_certificate_key /data/ssl/www.laobuluo.com/www_laobuluo_com.key;
ssl_session_timeout 1d;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;

server_name www.laobuluo.com;
access_log /data/wwwlogs/laobuluo.com_nginx.log combined;

charset utf-8,gbk;
location / {
proxy_set_header Accept-Encoding "";
proxy_pass https://www.laobuluo.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 laobuluo;
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;
}
}
server {
listen 80 default_server;
return 301 https://$host$request_uri;
}

CDN节点解析到SSL证书网站的时候,需要将证书放到CDN节点服务器对应目录,然后在对应conf配置文件中效仿上面的解析。

第五、CDN加速缓存问题

上面我们可以实现利用Nginx进行反向解析实现加速节点,但是没有解决缓存问题。我们是需要给网站定期来处理缓存更新。

1、配置ngx_cache_purge

location ~ /purge(/.*) {
allow all;
proxy_cache_purge cache_one $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}

红色的cache_one需要与上面定义的keys_zone保持一致。

2、WordPress自动刷新缓存

<script>
$(document).ready(function(){
$("#submit").click(function(){
var uri = "https://我们的网站域名/purge" + window.location.pathname;
$.get(uri,function(data,status){
return true;
});
});
});
</script>

将代码添加到WP网站模板底部。

3、完整的配置文件

proxy_cache_path /data/caches levels=1:2 keys_zone=xiaozcdn:100m inactive=30m max_size=100m;
server
{
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /xxx/www_xiaoz_me.crt;
ssl_certificate_key /xxx/www_xiaoz_me.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;

server_name www.xiaoz.me;
charset utf-8,gbk;

#删除缓存
location ~ /dcache(/.*) {
allow all;
proxy_cache_purge xiaozcdn $proxy_host$1$is_args$args;
error_page 405 =200 /purge$1;
}

location / {
#proxy_set_header Accept-Encoding "";
proxy_pass https://www.xiaoz.me;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache xiaozcdn;
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;
proxy_cache_key $uri$is_args$args;
}
}
server
{
listen 80;
server_name www.xiaoz.me;
rewrite ^(.*) https://www.xiaoz.me$1 permanent;
}

这里直接复制XIAOZ完整的包含缓存配置的配置文件(https://www.xiaoz.me/archives/9431)。

最后,这样我们就可以自己创建CDN节点给网站加速。也可以实现不同节点服务器,与DNSPOD等第三方解析进行分线路解析。

本文来自老部落:https://www.laobuluo.com/1119.html

转载于:https://www.cnblogs.com/itbulu/p/9027349.html

Nginx自建CDN加速节点 实现DNS智能解析网站项目相关推荐

  1. Nginx自建CDN以及ngx_cache_purge清除缓存

    Nginx自建CDN在<智能解析 + Nginx反向代理,自建CDN加速节点>已经介绍过,有兴趣的童鞋可参考,不过可以在这篇文章基础上继续完善,比如添加ngx_cache_purge模块来 ...

  2. 自建CDN加速平台CDNPlus正式开放 – 快速拥有自己的CDN

    为网站加速,建立私有的CDN节点群,每部署一个CDN节点只需3分钟! 如果你有多余的服务器资源,就可以通过CDNPlus快速的建立起你自己的CDN加速节点,国内.国外.联通.电信等线路任由你分发.每部 ...

  3. nginx做负载CDN加速获取端真实ip

    nginx做负载CDN加速获取端真实ip在不用cdn的情况下,nginx做负载获取真实ip时,nginx配置如下:Java代码 proxy_set_header Host $host; proxy_s ...

  4. 比较好用的CDN加速节点

    Staticfile CDN(七牛云) http://www.staticfile.org/ 这个是我觉得比较好用的CDN加速节点,包含了大部分静态资源文件,像bootstrap,jquery之类的, ...

  5. 前端ers 必须知道的几个jquery cdn加速节点

    jQuery是一个兼容多浏览器的javascript框架,核心理念是write less,do more(写得更少,做得更多).jQuery在2006年1月由美国人John Resig在纽约的barc ...

  6. 小麦盒子cdn_国内外优秀的 CDN 加速服务商,让你的网站访问速度飞起来

    一.域名有备案号/有备案CDN 这个工具是我做网站第二个使用的CDN加速,其实用他的原因还是因为360的CDN加速抽风的时间我就直接切换到百度云的CDN,百度云的CDN加速使用印象特别的不好,因为百度 ...

  7. DNS智能解析的另类使用 让搜索引擎更快更好的收录您的网站

    各位站长叱诧网络多年一定都有自己的绝招.必杀技!今天在这里为大家分享的一个方法是对DNS智能解析的另类应用,这也是DNSLA推出的特色服务之一. DNSLA团队推出的搜索引擎分网智能解析服务是根据国内 ...

  8. DNS智能解析的搭建与配置

    分类: LINUX 原文地址:DNS智能解析的搭建与配置 作者:十年梦生 9月份整整忙了一个月,都抽不出时间来写篇文章,这几天趁着10.1终于有时间来写些东西了,将9月份所做的一些东西来做下总结. 今 ...

  9. Linux C7 DNS智能解析的搭建

    DNS智能解析 智能解析原理 开始部署 1.编辑区域配置文件 添加这几个区域数据库文件 编辑各区域解析地址 测试 问题: 智能解析原理 在DNS中植入全世界的IP库以及IP对应的地域,当用户来请求解析 ...

最新文章

  1. 高频面试考点:Redis中有几百万数据量,如何进行高效访问?
  2. linux 安装python
  3. ubuntu配置vnc访问
  4. php父类继承子类_php有多态吗 多态都有什么好处?理解好多态往往能事半功倍...
  5. oracle索引sys_nc,通过dba_ind_columns表查到索引所在列的名字为SYS_NC00133$
  6. 2MyBatis入门--深入浅出MyBatis技术原理与实践(笔记)
  7. Linux命令解释之cp
  8. [简单分页]C#+JQUERY+ORACLE分页效果 ----转载
  9. python中文分词与词云画像_使用Python绘制肖像词云
  10. 视频教程-物联网嵌入式技术应用-物联网技术
  11. PKU四日游(信息科学夏令营)
  12. 即时通讯im源码软件uniapp(基于开源在线交友聊天系统源码框架)
  13. 数据融合技术——基本/常值增益/平方根/遗忘因子/自适应/限制k/扩大p的卡尔曼滤波
  14. 为什么计算机学硕人那么少,考研分数看似不高,为什么考上的人相对很少?总结得很精辟...
  15. 多视图聚类的算法总结
  16. 原创|5分钟建立反脆弱系统
  17. android跑马灯效果不起作用,Android跑马灯效果失效问题
  18. linux系统下的ocr软件,Ubuntu下的ocr文字识别(pdf、tif等)
  19. zabbix某一个代理服务器下面多个agent出现5分钟数据采集不到的告警的解决过程...
  20. react router教程

热门文章

  1. Android开发-在Android应用里接入AdMob广告进行变现的实现
  2. 想知道CAD怎么转图片格式?跟我学会这几招就足够了
  3. 如何在IOS系统中实现输入框自动聚焦并调起键盘
  4. ubuntu 18.04 下安装微信
  5. RTSP播放器网页web无插件直播流媒体音视频播放器EasyPlayer-RTSP-Android解码获取视频帧的方法
  6. 22考研全程时间计划安排表!
  7. php 字符串转 buffer,ArrayBuffer与字符串的互相转换
  8. 大恒相机+VS开发+Qt 跑通示例工程
  9. MapReduce论文笔记
  10. java excel 模板 替换_java替换Excel字符