基于centos 6.5使用varnish实现网站动静分离_Linux

一、Varnish简介

Varnish是一款高性能、开源的反向代理服务器和缓存服务器,其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。
Varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程)。
Management进程主要实现应用新的配置、编译VCL、监控varnish、初始化varnish以及提供一个命令行接口等。Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回应,Management将会重启此Child进程。

二、Varnish工作流程


1)、varnish从客户端接收请求后,由vcl_recv状态引擎处理,不能识别的请求将会通过参数pipe交给vcl_pipe状态引擎,需要查找缓存的请求通过lookup参数将会交给vcl_hash状态引擎,无需缓存的数据通过参数pass将会交给 vcl_pass状态引擎;
2)、vcl_hash状态引擎在接收到请求后会从缓存中查找数据,查询结果有两种,一种是hit缓存命中,另一种是miss缓存未命中;
3)、vcl_hit状态引擎将命中的缓存数据通过参数deliver交给vcl_deliver状态引擎,vcl_deliver状态引擎将数据处理后,最终返回给客户端;
4)、vcl_miss状态引擎将未命中的结果参数fetch交给vcl_fetch状态引擎,vcl_fetch状态引擎将会从数据库中查找数据;
5)、vcl_fetch状态引擎将从数据库中查询到的结果,返回给vcl_deliver状态引擎;
6)、vcl_deliver状态引擎将结果返回给master进程,最终返回给客户端;

三、使用Varnish实现网站动静分离

实验环境,三台虚拟机
Linux:CentOS6.5
Varnish:varnish-3.0.4-1.el6.x86_64
Nginx:nginx-1.4.7
Varnish主机:两块网卡,外网IP 172.16.36.10,内网IP 192.168.0.10
Web服务器1:IP 192.168.0.20,用于作静态文件服务器
Web服务器2:IP 192.168.0.30,用于作动态程序服务器
前提说明:
varnish的配置文件为vcl后缀,位于/etc/varnish/目录,缓存通常用于提升响应速度,一般而言,可以缓存html静态页面、图片、js脚本、css样式表,因为动态脚本语言编写的页面需要使用脚本引擎处理,因此没有缓存的必要性;nginx本身就有缓存及反向代理功能,完全可以实现web服务的动静分离,不过以缓存功能作对比,varnish的缓存显然比nginx更专业,所以要作缓存服务器,可以试试varnish,本次操作将以实验性的目的,使用varnish实现web服务动静分离;
1、安装Varnish
# rpm -ivh varnish-3.0.4-1.el6.x86_64.rpm varnish-docs-3.0.4-1.el6.x86_64.rpm varnish-libs-3.0.4-1.el6.x86_64.rpm
2、配置varnish
1)、编辑varnish脚本的配置文件/etc/sysconfig/varnish,将varnish监听的端口修改为80;

2)、新建文件/etc/varnish/web.vcl,编辑varnish缓存规则;

#定义后端服务器
backend web1 {
  .host="192.168.0.20";
  .port="80";
}
backend web2 {
  .host="192.168.0.30";
  .port="80";
}
#只允许本机使用purgers请求方法清除缓存
acl purgers {
  "127.0.0.1";
  "172.16.0.0"/16;
}
sub vcl_recv {
 if(req.request=="PURGE"){
   if(!client.ip~purgers) {
     error 405 "Mothod not allow";
   }
  }
#静态资源交给web1服务器
  if(req.url ~ "\.(html|htm|shtml|css|js|jpg|png|gif|jpeg)"){
   set req.backend=web1;
  }
#php页面交给web2服务器,并跳过缓存
  if(req.url ~ "\.php") {
   set req.backend=web2;
   return(pass);
  }
  return(lookup);
}
#将命中的缓存清除
sub vcl_hit {
 if (req.request == "PURGE") {
  purge;
  error 200 "Purged OK";
 }
}
#如果请求清除的资源不在缓存列表中,返回404状态
sub vcl_miss {
 if (req.request == "PURGE") {
  purge;
  error 404 "Not in cache";
 }
}
#如果请求清除的资源是一个不可缓存的资源,返回502状态
sub vcl_pass {
 if (req.request == "PURGE") {
  error 502 "Purged on a passed object.";
 }
}
#缓存对象存活时间
sub vcl_fetch {
  if(req.url ~ "\.(html|htm|shtml|css|js|jpg|png|gif|jpeg)"){
   set beresp.ttl=7200s;
  }
}
#将结果返回给客户端并在响应头部添加两字段,显示命中与否,并显示后端响应的web服务器
sub vcl_deliver {
  if(obj.hits > 0) {
   set resp.http.X-Cache="HIT from" + " " + server.ip;
  }else{
   set resp.http.X-Cache="MISS";
  }
  set resp.http.Backend-IP=req.backend;
}

3)、将配置加载至varnish;

3.1)、连接varnish;

3.2)、加载配置;

3.3)、使用配置;

4)、配置两台web服务器,分别安装nginx与php;
192.168.0.20服务器,新建两页面,index.html与index.php,两页面请求输出结果如下:

192.168.0.30服务器,新建两页面,index.html与index.php,两页面请求输出结果如下:

5)、测试结果,打开地址:172.16.36.10;

当我们请求html页面时,无论我们怎么刷新请求,缓存总是命中,并显示HIT,并且后端服务器一直是,web1(192.168.0.20);

当我们请求php页面时,我们不让他缓存,那么缓存也就永远不会命中,显示MISS,并且后端服务器一直是,web2(192.168.0.30);

6)、清除缓存;


整个配置完成,varnish实现了动静分离;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索centos
, varnish
动静分离
nginx实现动静分离、apache 实现动静分离、centos varnish、centos7 varnish、centos 卸载 varnish,以便于您获取更多的相关知识。

时间: 2024-08-03 19:54:57

基于centos 6.5使用varnish实现网站动静分离_Linux的相关文章

如何实现网站文件动静分离

背景 传统动静不分离的产品架构,随着访问量在增长,性能会成为瓶颈.以一个常见的Web站点为例.www.acar.com是一个刚建立汽车资讯车友交流网站,主站用Php搭建,有10GB的图片素材,部分JS文件.目前购买一台ECS放置所有程序代码,并在ECS上安装MySQL数据库.随着用户访问量的不断增长,不少用户反映,访问网站的速度越来越慢,图片加载慢,网站响应慢,同时网站技术人员也发现用户上传的图片越来越多,快超过1TB了.在这种情况下,用户可以通过利用OSS和CDN对网站进行架构优化,做到网站文

基于CentOS 7配置Nginx反向代理

Nginx作为反向代理服务器被广泛使用在各大互联网企业.它简单易用,可以根据业务的需求将其不同的业务类型代理至不同的服务器,将整个站点请求压力按类型分摊到不同的服务器.该方式使的整个站点请求性能得以极大的提升.本文简要描述了Nginx几种不同情形的代理演示,供大家参考. 一.反向代理及演示环境描述 1.反向代理 在计算机网络中,反向代理是一种代理服务器,代表客户端从一个或多个服务器检索资源.然后将这些资源返回给客户机,就像它们源自Web服务器本身一样.与正向代理相反,正向代理是与其关联的客户端联

基于CentOS 7安装Zabbix 3.4

Zabbix 是一个企业级的分布式开源监控方案.能够监控各种网络参数以及服务器健康性和完整性.支持灵活的通知机制,提供出色的报告和数据可视化功能.Zabbix支持主动轮询和被动捕获.最关键的是源代码都是免费发行的,可供公众任意使用.这也是它在中小企业广为流行的重要原因之一.本文简要描述Zabbix特性以及基于CentOS 7下安装Zabbix 3.4. 一.Zabbix的特点 数据收集  可用性和性能检查  支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控  自定义检查  

基于CentOS搭建 Git 服务

官方安装详细介绍 https://git-scm.com/download/linux 本文介绍通过源码安装 1.下载安装 git 此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服务器. 1.1 安装依赖库和编译工具 为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 1.2 安装编译工具 yum install gc

CentOS配置Shadowsocks代理服务器浏览国外网站例子

说明: Shadowsocks是一个轻量级的socks5代理软件, 而hadowsocks-libev是一个基于shadowsocks 协议的socks5代理软件, 相比原版,hadowsocks-libev程序体积小.高并发.资源占用更少.跨平台.完全兼容shadowsocks协议. hadowsocks-libev包括三个模块: ss-server:服务器端,部署在远程服务器,提供shadowsocks服务. ss-local:客户端,提供本地socks5协议代理. ss-redir:客户端

基于CentOS 7配置Nginx正向代理

Nginx是一款以轻量级.低内存开销.支持缓存.支持反向代理,负载均衡,电子邮件服务而著称.对于鲜为人知的是,它还可以作为一个简单易用的正向代理服务器.本文简要描述这个正向代理功能并给出演示,供大家参考. 有关Nginx的安装请参考 CentOS 7下yum方式安装Nginx Nginx 概述及日常管理 Nginx基于IP,端口,域名配置虚拟主机 一.配置nginx正向代理服务端配置 演示环境 # more /etc/redhat-release CentOS Linux release 7.2

Centos 安装GIT 同步发布到网站

之前一直都是用SVN 换了新公司后内部用的是GIT 于是研究一番 发现GIT确实就SVN快很多 于是试着搭建一下 第一步 安装GIT 其实在centos上安装很简单 直接用yum明白 yum install git 看下是否安装成功 git --version 如果出现版本号证明安装成功 第二部 创建GIT仓库 并发布到网站目录 我的网站目录在 /www/web 下 那我们先开始创建一个空的GIT仓库 cd / mkdir git cd git mkdir www.git cd www.git

比较详细的基于CentOS的WWW服务器架设指南第1/2页_Linux

一.系统约定 1.系统环境 Linux:CentOS-4.4.ServerCD Apache:2.2.4 MySQL:4.0.26 PHP:4.3.11 ZendOptimizer:3.2.2 phpMyAdmin:2.10.0.2 2.源码包存放位置 :/usr/local/src  #为什么一定要在/usr/local/src/下进行Tarball呢?这仅是约定俗成的,因为如此一来,大家都安装在这个地方,以后主机的维护与移交都很简单,并且对于将来在主机上面进行"升级"与"

Linux 基于CentOS的LNMP 服务器部署标准 新手简明版_Linux

先最小化安装系统. 一.系统约定 软件源代码包存放位置 /usr/local/src 源码包编译安装位置(prefix) /usr/local/software_name 脚本以及维护程序存放位置 /usr/local/sbin MySQL 数据库位置 /var/lib/mysql(可按情况设置) Nginx 网站根目录 /home/www/wwwroot(可按情况设置) Nginx 虚拟主机日志根目录 /home/www/logs(可按情况设置) Nginx 运行账户 www:www 二.系统