热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CDNvarnish

一、原理用server1当作缓存的,主机请求server1,server1通过varnish设置,访问server2,将se

一、原理


用server1当作缓存的,主机请求server1,server1通过varnish设置,访问server2,将server2信息缓存下来,显示给主机,server1 起到一个缓存效果。


二、配置过程


1.安装varnish,获得如下安装包

并且在你做缓存的主机上安装它们

2.步骤:

(1)server1配置:
vim /etc/sysconfig/varnish
 

VARNISH_LISTEN_PORT=80 配置varnish服务端口,主机在访问的时候就不需要输入端口号,因为http端口就是80

/etc/init.d/varnish start  打开varnish服务

vim /etc/varnish/default.vcl
 

backend default { #配置后端服务器(请求缓存的主机server2).host = "172.25.39.2";.port = "80";
}
sub vcl_deliver { #查看缓存命中情况,若有缓存,就得到,没有就miss,缓存刷新时间为120s
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache"
}
return (deliver);
}

/etc/init.d/varnish reload  #重启varnish服务

netstat -antlp  查看server1端口开向主机
(2)后台主机server2配置:

安装httpd服务  
 

yum install httpd -y
/etc/init.d/httpd start
cd /var/www/html
vim index.html

server2


curl localhost 查看http配置是否正确
netstat -antl 查看实际访问自己的是谁


(3)250主机(访问主机):

curl -I 172.25.39.1 访问server1,其实server1从server2缓存数据,显示给主机



三、定义多个不同域名站点的后端服务器

1.server1配置,加一台server3,输入不同的域名,从不同的服务器缓存

server3操作如图:

vim /etc/sysconfig/varnish
backend web1 {.host = "172.25.39.2";.port = "80";
}
backend web2 { .host = "172.25.39.3";.port = "80";
}sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1; #当访问www.westos.org域名时,从web1上取数据
}elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2; #当访问bbs.westos.org域名时,从web2上取数据
}else {error 404 "westos cache"; #访问其他页面显示报错
}
}sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

测试主机配置如图:

四、限定参数

1.vim  /etc/sysconfig/varnish

NFILES=65535 # Locked shared memory (for ulimit -l)
# Default log size is 82MB + header
MEMLOCK=82000# Maximum number of threads (for ulimit -u)
NPROCS="unlimited"

2.vim  /etc/security/limits.conf

varnish - nofile 65535
varnish - memlock 82000
varnish - nproc unlimited

3.sysctl -a | grep file
4.cat /etc/passwd  查看varnish用户的密码和所属shell
5.usermod -s /bin/bash  varnish
6.su - varnish
7.ulimit -n
8.ulimit -l

五、清理缓存

varnishadm ban.url /index.html  清理此文件缓存
varnishadm ban.url .*$          清理全部缓存(慎做)
varnishadm ban.url /admin/$     清理admin目录缓存

 

六、把多个后端聚合成一个组,并检测后端健康情况

1.vim  /etc/sysconfig/varnish

director lb round-robin {{ .backend = web1; } #当主机web1挂掉(stop),就访问web2,不挂掉,进行轮询{ .backend = web2; } #访问到web2时访问的是www.westos.org
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb; #当访问www.westos.org时,web1和web2进行轮询显示
return (pass); #为了测试方便,不进行缓存,浏览器就会轮询显示不同的页面
}elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
}else {error 404 "westos cache";
}
}

2.server3设置apache虚拟主机,不同域名访问的页面不一样
 

vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80DocumentRoot /var/www/htmlServerName bbs.westos.org

DocumentRoot /wwwServerName www.westos.org
mddir /www
cd /www
vim index.html

www.westos.org-server3


cd /var/www/html
vim index.html

bbs.westos.org-server3

vim /etc/hosts 加上地址解析
172.25.39.3 server3 www.westos.org bbs.westos.org/etc/init.d/httpd restart

 

3.测试:

curl www.westos.org
curl bbs.westos.org
显示结果为不同的页面,表示虚拟主机配置成功CD

七、CDN推送管理

cd pub/docs/varnish/ #在老师的主机上下载bansys,zip
get bansys.zip
yum install unzip -y #安装解压命令unzip
yum install php -y #安装php,因为cdn是php的一个页面
unzip bansys.zip #解压bansys.zip文件
cd bansys #切换到bansys目录
mv * /var/www/html/ #将解压的东西移动到/var/www/html目录下vim /etc/httpd/conf/httpd.conf #编辑httpd配置文件,改一下端口为8080
listen 8080vim config.php #修改此文件内容如下
前面没用的可以删掉
$var_group1 = array('host' => array('172.25.39.1'),'port' => '80',);//varnish群组定义//对主机列表进行绑定$VAR_CLUSTER = array('www.westos.org' => $var_group1,);/etc/init.d/httpd start #重启httpd服务

若不修改http文件里面的80端口会出现以下错误:

若修改了,结果为:

vim /etc/varnish/default.vcl
acl westos { #设置访问控制
"127.0.0.1";
"172.25.0.0"/24;
}backend web1 {.host = "172.25.39.2";.port = "80";
}
backend web2 {.host = "172.25.39.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;
}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 westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}/etc/init.d/varnish reload #重启varnish服务


推送后就清理缓存,访问www.westos.org就会出现轮询现象

 


推荐阅读
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 基于Web的Kafka管理工具Kafkamanager首次访问Web界面的详细配置指南(附图解)
    首次访问Kafkamanager Web界面时,需要对Kafka集群进行配置。这一过程相对简单,用户只需依次点击【Cluster】>【Add Cluster】,按照提示完成相关设置即可。本文将通过图文并茂的方式,详细介绍每一步的配置步骤,帮助用户快速上手Kafkamanager。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
author-avatar
妖姬脸似花甘露_545
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有