Bt(宝塔面板)反向绑定/自建CDN节点/加快海外网站访问速度

如今CDN(内容分发式网络)已经被越来越多的网站采用,通过cdn我们做到了更好的网站访问速度和更少的网站无法访问时间。目前大部分的cdn都是由一些比较主流的cdn提供商提供的,比如国外有cloudflare、国内各种云各种加速,它们的本质都是差不多的,而且很多还对流量小的网站有免费额度,比如七牛等。那么对于喜欢折腾的Simon来说,自己搞一搞cdn也是非常有意思的一件事情,今天就带大家了解一下如果通过智能的DNS解析+宝塔面板的反向代理功能为我们的网站提供镜像加速功能,基本不需要代码操作,新手向。cdn

  实现原理

这边先来对实现这一效果的三个主要工具做一下解释:

智能DNS解析:域名解析服务器根据来访者的特征类型进行抓取,并针对性的做出不同的解析。比较常见的DNS判断线路规则有:网络供应商判断(如:电信、网通、移动、教育网等),地域判断(国内、国外),搜索引擎判断(百度、谷歌、搜狗等)。国外的一些DNS服务商还提供不同国家的判断,以满足不同网络情况的访客的优质访问。

反向代理:反向代理(Reverse Proxy)方式是指定某一中间服务器请求目标服务器以抓取目标服务器上的内容,访客通过中间服务器间接访问目标服务器的内容。这样被我们成为镜像,这个在后面会讲到。http://www.hnanseo.com/1436.html

CDN:CDN的全称是Content Delivery Network,即内容分发网络,大家应该早就有听说过了。

通过上面三个东西,聪明的朋友就能很快立即到CDN的原理了。我们将不同的服务器部署在不同的网络环境中(地区、服务商),统一抓取并存储目标服务器上的内容,再通过智能DNS判断访客的网络环境,将访客引导到访问效果最佳的服务器进行访问。我们这边可以形象的把cdn服务器理解成我们源服务器的中继站,访客可以在离他们最近的中继站获取到目标服务器上的内容,而无需长途跋涉自己跑去目标服务器。

  所需准备及适合人群

DNS解析服务商(如DNSPOD等各种免费DNS服务商)

中继服务器(镜像服务器)根据需要配置

适用人群:原服务器在香港或海外,或者原服务器负载能力有限,需要满足多地访问需求。(或者闲得无聊喜欢折腾)

注意:原服务器如果要被国内的镜像服务器抓取并展现,需要保证原服务器在国内有备案,否则会无法访问。

  配置及部署

假设我们有需要给1个源站(A)域名:www.abc.com,分布两个镜像中继服务器(B、C),B的对象是国内用户,C的对象是国外用户。因为今天讲的是通过宝塔面板快速配置(比较简单,基本不需要代码操作),那么首先我们要在三个服务器上都安装宝塔面板(理论上源服务器装不装都无所谓)。宝塔面板安装非常方便,具体可以看他们的官网:http://www.bt.cn(安装请选择Nginx,如果镜像服务器不做其他用途可以不需要安装FTP、数据库等)。

安装完之后我们先进行DNS设置,在DNS解析中,我们将www的解析分为两个“线路”,第一个解析的线路选择“国内”,配置的IP为服务器B的IP地址;第二个解析的线路选择“国外”,配置的IP为服务器C的IP地址,如下图。这样设置完之后国内的用户访问我们的域名则会访问服务器B,国外的用户访问服务器C。

bt-cdn1

  反向代理镜像设置DNS

  那么这样存在一个问题:B、C两个服务器在抓取源站点信息的时候它们也会被DNS服务商转到自己的服务器上,导致它们无法正确抓取源站内容。所以这边我们就需要对B、C两个服务器的hosts进行修改。

如果是一般的VPS或者服务器,我们可以通过ssh登录服务器后进行输入以下命令修改主域名的hosts到我们源站的IP地址(附上ssh命令行新手操作指南):

vi /etc/hosts

服务器A的IP www.abc.com

但是由于我们使用了宝塔面板,我们可以直接在“文件”管理处编辑 /etc/hosts 文件,加上我们需要的记录。

添加完hosts记录之后,就是最重要的步骤:让服务器B和服务器C镜像源站服务器A的内容了。我们可以通过SSH登录B、C服务器ping一下主域名,看看IP地址是否已经为服务器A的IP地址。

我们在宝塔面板->网站处“添加站点”,正常添加站点,FTP、数据库这些都可以不需要设置,如下图。

bt-cdn2

  反向代理镜像设置:镜像服务器添加站点

  设置完之后我们可以在网站列表右侧对刚刚添加的新站点进行“设置”->“反向代理”,如下图:

bt-cdn3

  反向代理镜像设置:反向代理设置

  设置完之后我们需要重载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异步刷新。所以这段代码不一定需要。

  1. <script>
  2. $(document).ready(function(){
  3. $(“#submit”).click(function(){
  4. var uri = “https://www.daniao.org/purge” + window.location.pathname;
  5. $.get(uri,function(data,status){
  6. return true;
  7. });
  8. });
  9. });
  10. </script>

宝塔里面也有提示:可通过purge清理指定URL的缓存,示例:http://test.com/purge/test.png

5、启用CDN后无法获取真实评论IP

如果是Wordpress用户,当你启用了Nginx CDN加速后,你会发现WP后台获取到的用户评论IP都变成了CDN节点的,解决这个问题也很简单,只需要将下面一段代码加入到wp-config.php文件中即可:

  1. if (isset($_SERVER[‘HTTP_X_REAL_IP’])) {
  2. $_SERVER[‘REMOTE_ADDR’] = $_SERVER[‘HTTP_X_REAL_IP’];
  3. }

6、最终效果

如果这些都做完了,我们看看效果吧。利用ping测试工具,或者本地ping一下都能看到效果,这大鸟用站长工具的ping来测试下。

应该是看到效果了,香港这里大鸟的线路还是没变,其他电信都是变掉了。可以了,最后要的效果就是这样。

7、总结

利用Nginx反向绑定域名搭建CDN加速服务器低成本安装配置简单,特别适合不想使用付费CDN的朋友,事实上很多的专业CDN加速也是采用Nginx反向代|理的方式来加速网站访问,可以说Nginx CDN是非常有效的加速方法。

特别的利用Bt(宝塔面板)来搭建cdn更是简单容易,需要说明一点的是如果开启了代理中的缓存这个选项,Bt(宝塔面板)默认的缓存时间是12h,如果需要更改小点可以自己到配置文件里修改时间。

如果没有缓存的需要可以不选择

Related Post

发表回复