不想备案的同学一边都用的国外的vps,香港、美国、韩国、等等。说句实话,BA实在太麻烦,而且个人隐私暴露无遗,说不定还会把隐私贩卖掉。但是大环境是这样的,屁民有什么办法。
今天要说的是如何利用Bt(宝塔面板)反向代理来自建CDN节点加速我们在海外的网站,通过cdn让我们的网站访问速度更优秀。说到CDN节点,那我们得自购一台vps,手里有闲置的vps也可以玩玩,推荐的地方是香港、韩国、日本、俄罗斯伯力也不错。对于喜欢折腾的骚年来说,自己搞一搞cdn也是非常有意思的一件事情,今天来折腾一下如何通过智能的DNS解析+宝塔面板的反向代理功能为我们的网站提供cdn节点加速功能,基本不需要代码操作,新手的福利,整个过程快速简单安全。
实现原理
我们要实现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、区分IP
一共两个或者多个ip,这里大家区分一下
源站点ip:a.a.a.a(网站文件存放的服务器)
宝塔面板ip:b.b.b.b(用来搭建cdn的服务器)
3、bt面板配置及部署
1、安装宝塔面板——安装服务器环境——添加站点——安装插件:HOST 修改工具
2、添加hosts:打开已经安装的“HOST 修改工具”插件,填写域名和源站点的IP:a.a.a.a。
不喜欢装插件的朋友也可以手动修改HOST文件,目录/etc/hosts
4、站点设置
打开站点——点击网站设置——弹出框找到左边反向代理——打开设置如图:
首先开启代理,开启缓存。
然后将缓存时间设置一下,这里推荐180分钟,也就是3个小时。
目标URL,前后两个网址是源站A的网址,大体内容是一样的。唯一的区别是,在前面那个框里面,需要添加上https://或者是http://
下面的内容替换可以暂时不用管。
填写完毕后,点击下方的提交即可。
5、重载nginx配置
设置完之后我们需要重载nginx配置,在宝塔面板“软件管理”处找到nginx,点右侧的“设置”->“重载配置”即可。
6、设置ssl证书
如果网站开启了ssl,代理加速的服务器站点也要设置。
如果源站启用了HTTPS协议,那么镜像站点也需要部署HTTPS证书,我们可以在上面面板中“SSL”处免费部署证书。不然会有502的错误,我们这里配置的域名和主站点是一样的。
7、设置域名解析
域名解析到IP:b.b.b.b即可。
官方帮助页面,包括了缓存配置在里面:https://www.bt.cn/bbs/thread-18019-1-1.html
8、清理缓存
清理缓存指令:
https://你的域名/purge/页面
例如:https://www.vlwx.com/purge/123.html直接浏览器输入即可清理缓存。
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.daniao.org/purge" + window.location.pathname; $.get(uri,function(data,status){ return true; }); }); }); </script>
启用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']; }
9、最终效果
如果这些都做完了,我们看看效果吧。利用ping测试工具,或者本地ping一下都能看到效果,用站长工具的ping来测试下。
http://tva1.sinaimg.cn/large/bf4287c1ly1gnpow7jkznj20n603ygnm.jpg
10、总结
利用Nginx反向绑定域名搭建CDN加速服务器低成本安装配置简单,特别适合不想使用付费CDN的朋友,事实上很多的专业CDN加速也是采用Nginx反向代|理的方式来加速网站访问,可以说Nginx CDN是非常有效的加速方法。