Varnish之CDN推送管理平台实例

2024-02-19 08:38

本文主要是介绍Varnish之CDN推送管理平台实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CDN简介

CDN(Content Delivery Network)内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

CDN优势

CDN能几乎涵盖国内所有线路。而在可靠性上, CDN 在结构上实现了多点的冗余,即使某一个节点由于意外发生故障,对网站的访问能够被自动导向其他的健康节点进行响应。CDN能轻松实现网站的全国铺设,不必考虑服务器的投入与托管、不必考虑新增带宽的成本、不必考虑多台服务器的镜像同步、不必考虑更多的管理维护技术人员。

主机环境:
  • rhel6.5 selinux and iptables disabled
实验主机:
主机名IP服务
server1172.25.254.1varnish
server2172.25.254.2apache
server3172.25.254.3apache

varnish cdn 推送平台

  • varnish 相关配置请参考上篇博文
    • http://blog.csdn.net/sunny_future/article/details/79319613
  • varnish-server1
[root@server1 ~]# yum install -y httpd[root@server1 ~]# vim /etc/httpd/conf/httpd.conf ##修改端口为8080,避免冲突
Listen 8080[root@server1 ~]# /etc/init.d/httpd start
[root@server1 ~]# netstat -antlp

这里写图片描述

[root@server1 ~]# yum install -y php        ##需要安装 php 支持
[root@server1 ~]# yum install -y unzip
[root@server1 ~]# unzip -x bansys.zip
[root@server1 ~]# mv bansys/*  /var/www/html/
[root@server1 ~]# ls /var/www/html/
class_socket.php  config.php  index.php  purge_action.php  static
[root@server1 ~]# vim /var/www/html/config.php 
<?php   //varnish主机列表//可定义多个主机列表$var_group1 = array('host' => array('172.25.254.1'),'port' => '80',             );//varnish群组定义//对主机列表进行绑定$VAR_CLUSTER = array('www.westos.org' => $var_group1,);//varnish版本//2.x和3.x推送命令不一样$VAR_VERSION = "3";
?>
[root@server1 ~]# /etc/init.d/httpd restart
物理机测试:
  • 查看解析
[root@fundation20 Desktop]# cat /etc/hosts
172.25.254.1 server1 www.westos.org westos.org bbs.westos.org
  • 浏览器测试
    这里写图片描述
http 模式需要对 varnish 做以下设置
[root@server1 ~]# vim /etc/varnish/default.vcl 
##添加如下
acl westos {     #设置访问控制,即白名单"127.0.0.1";"172.25.254.0"/24;}
backend web1 {.host = "172.25.254.2";.port = "80";
}
backend web2 {.host = "172.25.254.3";.port = "80";
}
director lb round-robin {{ .backend = web1; }{ .backend = web2; }
}sub vcl_recv {if (req.request == "BAN") {if (!client.ip ~ westos) {error 405 "Not allowed.";}ban("req.url ~ " + req.url);error 200 "ban added";}if (req.http.host ~ "^(www.)?westos.org") {set req.http.host = "www.westos.org";set req.backend = lb;#return(pass);    ##还原缓存} elsif (req.http.host ~ "^bbs.westos.org") {set req.backend = web2;} else {error 404 "westos cache";}}
#查看缓存命中情况
sub vcl_deliver {if (obj.hits > 0) {set resp.http.X-Cache = "HIT from test cache";}else {set resp.http.X-Cache = "MISS from test cache";}return (deliver);}
[root@server1 ~]# /etc/init.d/varnish restart
Stopping Varnish Cache:                                    [  OK  ]
Starting Varnish Cache:                                    [  OK  ]
  • apache-server2
#保持Varnish负载均衡中server2配置
http://blog.csdn.net/sunny_future/article/details/79319613
  • apache-server3
#保持Varnish负载均衡中server3配置
http://blog.csdn.net/sunny_future/article/details/79319613
物理机测试:
  • 查看解析
[root@fundation20 Desktop]# cat /etc/hosts
172.25.254.1 server1 www.westos.org westos.org bbs.westos.org
  • 终端测试
    • 一般情况下
      这里写图片描述
    • CDN推送
      写入推送页面,点击确认提交
      这里写图片描述
      显示推送成功
      这里写图片描述
    • 页面已经更新
      这里写图片描述

这篇关于Varnish之CDN推送管理平台实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/724123

相关文章

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程