不想BA的同学一边都用的国外的vps,香港、美国、韩国、等等。说句实话,BA实在太麻烦,而且个人隐私暴露无遗,说不定还会把隐私贩卖掉。但是大环境是这样的,屁民有什么办法。
今天要说的是如何利用Bt(宝塔面板)反向-代-理来自建CDN节点加速我们在海外的网站,通过cdn让我们的网站访问速度更优秀。说到CDN节点,那我们得自购一台vps,手里有闲置的vps也可以玩玩,推荐的地方是香港、韩国、日本、俄罗斯伯力也不错。对于喜欢折腾的骚年来说,自己搞一搞cdn也是非常有意思的一件事情,今天来折腾一下如何通过智能的DNS解析+宝塔面板的反-向-代-理功能为我们的网站提供cdn节点加速功能,基本不需要代码操作,新手的福利,整个过程快速简单安全。
博客托管在linode的东京2号机房,额,是NTT线路,大家都知道的,速度不如东京1号机房。NTT线路大鸟觉得移动联动还可以,就尼玛电信的线路每天都是炸掉的感觉,非常非常不稳定。但是用linode习惯了,不想换了,于是想着就给电信单独解析一条线路,这样会不会好一点,自己做网站,反正就是折腾啊,那我们就开始折腾把!
实现原理
我们要实现CDN加速就先要来对实现这一效果的三个主要工具做一下解释:
智能DNS解析:域名解析服务器根据来访者的特征类型进行抓取,并针对性的做出不同的解析。比较常见的DNS判断线路规则有:网络供应商判断(如:电信、网通、移动、教育网等),地域判断(国内、国外),搜索引擎判断(百度、谷歌、搜狗等)。国外的一些DNS服务商还提供不同国家的判断,以满足不同网络情况的访客的优质访问,国内的免费比如说dns,dnspod,CloudXNS,dns.la都可以,国外的没试过。基本国内大部分第三方的dns都是智能的!大鸟这里用的是dns.com他们家的解析,所以就以这家为列。
反向-代-理:反向代理(Reverse Proxy)方式是指定某一中间服务器请求目标服务器以抓取目标服务器上的内容,访客通过中间服务器间接访问目标服务器的内容。这样被我们成为镜像,这个在后面会讲到。Bt(宝塔面板)的反向-代-理就动动鼠标点几下就可以了,不需要配置命令!
CDN:CDN的全称是Content Delivery Network,即内容分发网络,大家应该早就有听说过了。(一台vps,一个智能dns解析,一个宝塔面板)来实现最简单的cdn加速。
通过上面三个东西,聪明的朋友就能很快立即到CDN的原理了。我们将不同的服务器部署在不同的网络环境中(地区、服务商),统一抓取并存储目标服务器上的内容,再通过智能DNS判断访客的网络环境,将访客引导到访问效果最佳的服务器进行访问。我们这边可以形象的把cdn服务器理解成我们源服务器的中继站,访客可以在离他们最近的中继站获取到目标服务器上的内容,而无需长途跋涉自己跑去目标服务器。
1、所需准备及适合人群
- DNS解析服务商(如DNSPOD等各种免费DNS服务商)
- 节点服务器(镜像服务器)根据需要配置
适用人群:原服务器在香港或海外,或者原服务器负载能力有限,需要满足多地访问需求。(或者闲得无聊喜欢折腾)
注意:原服务器如果要被国内的镜像服务器抓取并展现,需要保证原服务器在国内有备案,否则会无法访问。
2、DNS智能解析
我们如果已经购买了vps,那就先到dns哪里解析新的ip吧。利用DNS域名解析提供的线路、地域、客户端等DNS解析功能,我们可以将不同的宽带用户、省份用户还有客户端用户解析到CDN节点上了。
这是dns.com的解析,新增了一条线路就是专门的电信线路到我们新购的服务器的ip上,也就是我们准备配置的cdn节点。一般喜欢先解析ip,如果你觉得麻烦,可以过一会在解析这个随意。因为早点解析,就早点生效啊!
3、bt面板配置及部署
假设我们有需要给1个源站(A)域名:www.51yhyh.com,因为我的vps是linode日本机房电信线路很不好,所以大鸟选购一台国内电信速度访问特别好的线路vps,比如说伯力的机器,或者香港的机房。因为今天讲的是通过宝塔面板快速配置(比较简单,基本不需要代码操作),那么首先我们要在新够的服务器上安装宝塔面板,宝塔面板安装非常方便,具体可以看他们的官网:http://www.bt.cn(安装请选择Nginx,如果镜像服务器不做其他用途可以不需要安装FTP、数据库等),大鸟看过wdpc面板貌似也可以很容易的搭建,但是大鸟没试过。大鸟这里就不说如何安装bt面板了。
这里我以www.51yhyh.com作cdn加速为例,有一台源站VPS,还有一台用作CDN反向代#理的VPS,它两者对应的IP如下:
源站:192.168.100.100,就是www.51yhyh.com网站数据真实存放的地方
CDN:192.168.100.101 CDN节点,如果有多台操作方法是一样的
1)先在CDN节点上修改Hosts,目的就是告知CDN节点从那里去获取网站数据,也就是回源地址,修改如下:
vi /etc/hosts
192.168.100.100 www.51yhyh.com
但是由于我们使用了宝塔面板,我们可以直接在“文件”管理处编辑 /etc/hosts
文件,加上我们需要的记录。
添加完hosts记录之后,就是最重要的步骤:让新购买的服务器CDN:192.168.100.101这个节点去像源站服务器www.51yhyh.com的内容了。
2)添加站点
我们在宝塔面板->网站处“添加站点”,正常添加站点,FTP、数据库这些都可以不需要设置,如下图。
3)反向代理
设置完之后我们可以在网站列表右侧对刚刚添加的新站点进行“设置”->“反向代理”,如下图:
如果是多网站需要缓存分文件夹查看☞宝塔面板反向代理缓存修改地址
4)重载nginx配置
设置完之后我们需要重载nginx配置,在宝塔面板“软件管理”处找到nginx,点右侧的“设置”->“重载配置”即可。
5)设置ssl证书
注意:如果源站启用了HTTPS协议,那么镜像站点也需要部署HTTPS证书,我们可以在上面面板中SSL处,免费部署证书。不然会有502的错误,我们这里配置的域名和主站点是一样的,如果你直接在这里申请Let’s Encrypt证书会提示错误,但是主站点哪里是申请好的,我们可以直接复制过来,因为域名都是一样也就是解析的ip不一样,所以可以直接复制过来使用。
至此,所有需要的配置均配置完毕,等待解析生效后我们就可以通过ping我们的域名来测试是否生效,我们也可以借助第三方工具来检查不同线路、地区的访问是否已经路由到对应的服务器。
4、WordPress自动刷新缓存
对于Wordpress博客,如果启用CDN后页面被缓存,用户提交评论后无法马上显示出来,可以使用Ajax异步请求ngx_cache_purge接口(Bt(宝塔面板)默认已经安装好了ngx_cache_purge模块)当用户提交评论的时候则清除该页面缓存。只需要下面的这段js添加到footer.php
即可。不过一般现在的主题都支持Aja异步刷新。所以这段代码不一定需要。
<script>
$(document).ready(function(){
$("#submit").click(function(){
var uri = "https://www.51yhyh.com/purge" + window.location.pathname;
$.get(uri,function(data,status){
return true;
});
});
});
</script>
宝塔里面也有提示:可通过purge清理指定URL的缓存,示例:http://test.com/purge/test.png
5、启用CDN后无法获取真实评论IP
如果是Wordpress用户,当你启用了Nginx CDN加速后,你会发现WP后台获取到的用户评论IP都变成了CDN节点的,解决这个问题也很简单,只需要将下面一段代码加入到wp-config.php文件中即可:
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}
6、最终效果
如果这些都做完了,我们看看效果吧。利用ping测试工具,或者本地ping一下都能看到效果,用站长工具的ping来测试下。
应该是看到效果了,香港这里大鸟的线路还是没变,其他电信都是变掉了。可以了,最后要的效果就是这样。
7、总结
利用Nginx反向绑定域名搭建CDN加速服务器低成本安装配置简单,特别适合不想使用付费CDN的朋友,事实上很多的专业CDN加速也是采用Nginx反向代|理的方式来加速网站访问,可以说Nginx CDN是非常有效的加速方法。
特别的利用Bt(宝塔面板)来搭建cdn更是简单容易,需要说明一点的是如果开启了代理中的缓存这个选项,Bt(宝塔面板)默认的缓存时间是12h,如果需要更改小点可以自己到配置文件里修改时间。
当然境外线路也可用亚马逊免费cdn ☞亚马逊CDN详细图文部署教程亚马逊cdnAWS CloudFront CDN
使用了反向代理注意事项
- 源服务器如果开了防火墙一定要将反向代理的服务器ip设置到源服务器白名单
- 如需多个站点分开缓存👉宝塔面板反向代理缓存修改地址
- 反向代理不缓存指定目录方式,反向代理后不能登录👉登陆问题/缓存设置/缓存目录设置介绍
- 反向代理链接报错504,服务器错误日志👉宝塔反向代理缓存出现错误directory index of "/www/wwwroot/" is forbidden, client:
- 禁止被其他人恶意代理:宝塔面板设置禁止通过IP直接访问网站防止恶意解析+禁止被反向代理