linux 中varnish服务

一、安装varnish
在server1中安装两个包
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm
1.在server1中(varnish)配置varnish服务
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80      ##varnish监听端口

vim /etc/varnish/default.vcl
backend default {
.host = "172.25.8.2";
.port = "80";
}

然后开启服务
/etc/init.d/varnish  start

测试

新开一台虚拟机(server2)
yum install httpd

/etc/init.d/httpd start
vim /var/www/html/index.html
<h1>www.westos.org-sever2</h1>

在浏览器中输入172.25.8.1
会出现server2index.html内容

二、缓存命中

在varnish中:
vim default.vcl
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                 ##使用reload重新加载

测试

curl www.westos.org
www.westos.org-sever2
vim /etc/hosts
172.25.8.1 server1 www.westos.org   www.linux.org  westos.org                                  ##加入本地解析

curl -I www.westos.org

三、varnishadm 清除缓存
varnishadm ban.url .*$        清除所有
varnishadm ban.url /index.html    清除 index.html 页面缓存
varnishadm ban.url /admin/$     清除 admin 目录缓存

四、定义多个不同域名站点的后端服务器
再开启一台虚拟机(server3)
yum install httpd
vim /var/www/html/index.html
<h1>www.linux.org</h1>

在varnish中:
vim default.vcl

backend web1 {
  .host = "172.25.8.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.8.3";
  .port = "80";
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
} elsif (req.http.host ~ "^www.linux.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}

/etc/init.d/varnish reload   重载

测试:
curl www.westos.org
www.westos.org-sever2
curl westos.org
www.westos.org-sever2
curl www.linux.org
www.linux.org

五、负载均衡

在server3中:
vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName www.linux.org
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /www1
    ServerName www.westos.org
</VirtualHost>

在server3中
mkdir /www1
vim /www1/index.html
<h1>www.westos.org-server3</h1>

/etc/init.d/httpd restart
[[email protected] ~]# curl www.linux.org
<h1>www.linux.org</h1>

[[email protected] ~]# curl www.westos.org
<h1>www.westos.org-server3</h1>

在varnish中:
vim default.vcl
backend web1 {
  .host = "172.25.8.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.8.3";
  .port = "80";
}

director lb round-robin {
        { .backend = web1; }
        { .backend = web2; }
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
#return (pass)        加入此行可以更加直观看到实验效果,正常情况下不加
} elsif (req.http.host ~ "^www.linux.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}

/etc/init.d/varnish reload

测试:实现负载均衡

当server2的httpd闭

[[email protected] ~]# curl westos.org/index.html
<h1>www.westos.org-server3</h1>
[[email protected] ~]# curl westos.org/index.html
<h1>www.westos.org-server3</h1>

当server3的httpd闭
[[email protected] ~]# curl westos.org/index.html
<h1>www.westos.org-sever2</h1>
[[email protected] ~]# curl westos.org/index.html
<h1>www.westos.org-sever2</h1>
 

当server2和server3的http都开启

[[email protected] ~]# curl westos.org
<h1>www.westos.org-server3</h1>
[[email protected] ~]# curl westos.org
<h1>www.westos.org-sever2</h1>
[[email protected] ~]# curl westos.org
<h1>www.westos.org-server3</h1>

六、cdn推送平台搭建

在varnish主机上

yum install httpd
vim /etc/httpd/conf/http.conf
将监听端口改为8080,防止和varnish主机80端口冲突

/etc/init.d/httpd restart

下载bansys.zip包

yum install php
yum install unzip
unzip bansys.zip  -d /var/www/html
cd /var/www/html/bansys
mv * ..
cd ..
vim config.php
/etc/init.d/httpd start
<?php

//varnish主机列表
 //可定义多个主机列表
 $var_group1 = array(
                        ‘host‘ => array(‘172.25.8.1‘),
                                                ‘port‘ => ‘80‘,      
                    );

//varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         ‘www.westos.org‘ => $var_group1,
                     );

vim /etc/varnish/default.vcl

acl westos {
"127.0.0.1";
"172.25.8.0"/24;
}

sub vcl_recv {

if (req.request == "BAN"){
if (!client.ip ~ westos){
error 405 "Not allowed.";
}
ban ("req.url ~ " + req.url);
error 200 "ban added";
}

原文地址:https://www.cnblogs.com/zhengyipengyou/p/9642532.html

时间: 2024-10-04 16:18:12

linux 中varnish服务的相关文章

Linux中Sshd服务配置文件优化版本(/etc/ssh/sshd_config)

Linux中Sshd服务配置文件优化版本(/etc/ssh/sshd_config) # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTN

linux中ssh服务

ssh:Secure Shell,属于应用层协议,工作在tcp的22端口.相对于telnet,ssh通信过程及认证过程都是加密的,故更加安全. 在linux中,一般使用openssh来实现ssh ssh的认证有口令认证和密钥认证 一.基于口令的认证 1.        客户端发起连接请求 2.        服务端发送自身公钥给客户端,由客户端决定是否接受(ssh客户端接收一个服务端的密钥                           后,密钥保存在客户端当前用户的家目录下的.shh目录中

linux中FTP服务搭建详解--1.匿名与权限

实验环境:在redhat6.5中安装配置FTP服务,并使用一台win7系统访问验证. 理论: FTP连接方式     支持两种连接模式:主动模式(Port)和被动模式(Pasv),这两种模式都是针对数据链路进行的,与控制链路无关. 主动模式工作过程: 1.客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路2.然后客户端发出Port指令告诉服务器连接自己的N+1端口来建立一条数据通道3.当FTP服务器接到这一指令时,会使用20端口连接用户在Port指令中指定的端口号

Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档. 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/reference/html/deployment.html 请注意,在部署为 systemd 服务的时候,上面的配置文件为: [Unit] Description=myapp After=syslog.target [Service]

Linux中vsftpd服务配置(匿名,用户,虚拟用户)

vsftpd概述 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征. 特点 非常高的安全性需求.带宽限制.良好的可伸缩性.可创建虚拟用户.支持IPv6.速率高 小巧轻快,安全易用. ftp.sftp.

linux中apache服务的三种不同访问方式

实验环境:使用Red Hat Linux-6.2 32位操作系统用于搭建apache服务,使用windows 7-32位作为客户机.下面是详细的操作步骤. 实验步骤:搭建好系统自带的httpd服务:①搭建httpd服务的虚拟目录,并访问:②搭建基于不同主机名的httpd访问服务,并访问:③搭建基于不同端口号的httpd访问服务,并验证. 首先是检查httpd服务的安装环境,一些必要的环境条件一定要有.然后直接启动httpd服务试试看,此时虽然可以启动服务但是会有一些提示,最好处理一下.Httpd

Linux中设置服务自启动的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0-6七个运行级别之一) chkonfig                命令行运行级别设置 ntsysv                   伪图形运行级别设置 注意:1.这三种方式主要用于以redhat为基础的发行版 2.如果还不知道运行级别是什么,那么最

Linux中crond服务与crontab用法

需要写个在Linux下定时更新系统的脚本,man crondtab 不甚详细,现将网络上的介绍列举如下: crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务: crontab -u //设定某个用户的cron服务,一般ro

Linux中Varnish基础应用

http  cache的实现方式有两种: Squid.Varnish:一般被称为缓存服务器 Squid:支持正向和反向代理.是一款重量级的缓存服务器,在高负载的情况下,性能非常的稳定 Varnish:支持反向代理:相比于Squid是非常轻量级的缓存服务器,在高负载情况下,性能较差,没有Squid稳定:一般被称为http加速器: Varnish的特点: 一.组成部分 Management:作为主控进程:提供命令行接口.管理各种子进程.初始化,加载文件等等 Child/Cache:缓存管理.日志数据