Varnish实现动静分离(三)

2024-04-13 05:32
文章标签 分离 实现 varnish 动静

本文主要是介绍Varnish实现动静分离(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验环境(Centos7)

主机名            IP                版本
varnish        192.168.14.210    4.0.5
web1(nginx)    192.168.14.211    nginx/1.12.2
tomcat         192.168.14.213    
client         192.168.14.212

注意:本篇文章是在第二篇文章基础上稍作修改

一、varnish:192.168.14.210

1、配置静态页面后端主机和动态页面后端主机IP和端口

backend websrv1 {.host = "192.168.14.211";    #后端主机IP地址.port = "80";    #后端主机监听的端口
}
backend tomcat1 {.host = "192.168.14.213";.port = "8080";
}
backend websrv1 {.host = "192.168.14.211";    #后端主机IP地址.port = "80";    #后端主机监听的端口
}
backend tomcat1 {.host = "192.168.14.213";.port = "8080";
}

2、先判断是否是jsp动态页面内容,如果是就选择tomcat主机,否则就选择websrv主机

sub vcl_recv {if (req.url ~ "(?i)\.jsp$") {set req.backend_hint = tomcat1;}else{set req.backend_hint = websrv1;}
}

3、重载配置文件,并清除所有缓存以免影响实验

[root@varnish ~]# varnish_reload_vcl
[root@varnish ~]# varnishadm ban req.url "~" /

4、varnish配置详情

[root@varnish ~]# cat  /etc/varnish/default.vcl
#
# This is an example VCL file for Varnish.
#
# It does not do anything by default, delegating control to the
# builtin VCL. The builtin VCL is called when there is no explicit
# return statement.
#
# See the VCL chapters in the Users Guide at https://www.varnish-cache.org/docs/
# and http://varnish-cache.org/trac/wiki/VCLExamples for more examples.# Marker to tell the VCL compiler that this VCL has been adapted to the
# new 4.0 format.
vcl 4.0;
import directors;
# Default backend definition. Set this to point to your content server.backend websrv1 {.host = "192.168.14.211";    #后端主机IP地址.port = "80";    #后端主机监听的端口
}
backend tomcat1 {.host = "192.168.14.213";.port = "8080";
}
#创建后端主机组
sub vcl_init {
#    new websrv = directors.round_robin();    #设置主机组的调度算法,有两种,另一种为random
#    websrv.add_backend(websrv1);    #将后端主机加入到组中
#    websrv.add_backend(websrv2);    #将后端主机加入到组中
}
sub vcl_recv {# Happens before we check if we have this in cache already.## Typically you clean up the request here, removing cookies you don't need,# rewriting the request, etc.
#        set req.backend_hint = websrv.backend();if (req.url ~ "(?i)\.jsp$") {set req.backend_hint = tomcat1;}else{set req.backend_hint = websrv1;}
}sub vcl_backend_response {# Happens after we have read the response headers from the backend.## Here you clean the response headers, removing silly Set-Cookie headers# and other mistakes your backend does.
}sub vcl_deliver {# Happens when we have all the pieces we need, and are about to send the# response to the client.## You can do accounting or modifying the final object here.if (obj.hits>0) {set resp.http.X-Cache = "Hit via "+ server.ip;}else {set resp.http.X-Cache = "Miss via "+ server.ip;}
}

二、web1:192.168.14.211

1、具体配置查看第一篇文章,不需要改变

三、tomcat:192.168.14.213

tomcat官网https://tomcat.apache.org/

1、解压下载好的压缩包

[root@tomcat ~]# tar -zxvf apache-tomcat-9.0.8.tar.gz

2、下载java包解压,并配置环境变量

[root@tomcat ~]# tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@tomcat ~]# vim /etc/profile
#在最下面添加
JAVA_HOME=/usr/local/jdk1.8.0_91
export JAVA_HOME
CLASSPATH=.:$JAVA_HOME/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH
export PATH
#保存退出
[root@tomcat ~]# source /etc/profile
[root@tomcat ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

3、关闭防火墙和selinux

[root@tomcat ~]# systemctl stop firewalld
[root@tomcat ~]# systemctl disable firewalld
[root@tomcat ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

4、启动服务

[root@tomcat ~]# apache-tomcat-9.0.8/bin/startup.sh

5、查看8080端口是否开启

[root@tomcat ~]# netstat -ntlp|grep 80
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      6930/java           
tcp6       0      0 :::8009                 :::*                    LISTEN      6930/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      6930/java 

四、客户端:192.168.14.212

1、看到不管是jsp还是html都能自动跳转到后端主机访问成功,然后缓存到varnish

[root@client ~]# curl -I http://192.168.14.210/index.jsp
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Date: Tue, 01 Oct 2019 15:54:34 GMT
X-Varnish: 33518
Age: 0
Via: 1.1 varnish-v4
X-Cache: Miss via 192.168.14.210
Content-Length: 11228
Connection: keep-alive[root@client ~]# curl -I http://192.168.14.210/index.jsp
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Date: Tue, 01 Oct 2019 15:54:34 GMT
X-Varnish: 98727 33519
Age: 2
Via: 1.1 varnish-v4
X-Cache: Hit via 192.168.14.210
Content-Length: 11228
Connection: keep-alive[root@client ~]# curl -I http://192.168.14.210/index.html
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Wed, 24 Jan 2018 02:57:43 GMT
Content-Type: text/html
Content-Length: 17
Last-Modified: Tue, 23 Jan 2018 13:59:55 GMT
ETag: "5a673fdb-11"
X-Varnish: 98729
Age: 0
Via: 1.1 varnish-v4
X-Cache: Miss via 192.168.14.210
Connection: keep-alive[root@client ~]# curl -I http://192.168.14.210/index.html
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Wed, 24 Jan 2018 02:57:43 GMT
Content-Type: text/html
Content-Length: 17
Last-Modified: Tue, 23 Jan 2018 13:59:55 GMT
ETag: "5a673fdb-11"
X-Varnish: 33521 98730
Age: 3
Via: 1.1 varnish-v4
X-Cache: Hit via 192.168.14.210
Connection: keep-alive[root@client ~]# 

这篇关于Varnish实现动静分离(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Nginx更新SSL证书的实现步骤

《Nginx更新SSL证书的实现步骤》本文主要介绍了Nginx更新SSL证书的实现步骤,包括下载新证书、备份旧证书、配置新证书、验证配置及遇到问题时的解决方法,感兴趣的了解一下... 目录1 下载最新的SSL证书文件2 备份旧的SSL证书文件3 配置新证书4 验证配置5 遇到的http://www.cppc

Nginx之https证书配置实现

《Nginx之https证书配置实现》本文主要介绍了Nginx之https证书配置的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起... 目录背景介绍为什么不能部署在 IIS 或 NAT 设备上?具体实现证书获取nginx配置扩展结果验证

SpringBoot整合 Quartz实现定时推送实战指南

《SpringBoot整合Quartz实现定时推送实战指南》文章介绍了SpringBoot中使用Quartz动态定时任务和任务持久化实现多条不确定结束时间并提前N分钟推送的方案,本文结合实例代码给大... 目录前言一、Quartz 是什么?1、核心定位:解决什么问题?2、Quartz 核心组件二、使用步骤1

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

mybatis-plus分表实现案例(附示例代码)

《mybatis-plus分表实现案例(附示例代码)》MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,:本文主要介绍my... 目录文档说明数据库水平分表思路1. 为什么要水平分表2. 核心设计要点3.基于数据库水平分表注意事项示例

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.