记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。


varnish安装配置

如果是RedHat/CentOS系统,在安装varnish的时候首先要安装以下软件包
automake
autoconf
libtool
ncurses-devel
libxslt
groff
pcre-devel
pkgconfig

一、安装

# tar zxvf varnish-2.1.3.tar.gz -C /usr/local/src/

# cd /usr/local/src/varnish-2.1.3/

# ./configure --prefix=/usr/local/varnish

# make

# make install

二、创建www用户和组,以及Varnish缓存文件存放目录

1. 创建组

# groupadd www

2.创建用户

useradd www -g www -s /sbin/nologin

-g:指定用户属于哪个组

-s:指定用户属于哪个shell登录(nologin就是不允许登录)

3.创建缓存文件目录

# mkdir -p /data/varnish/

-p:可以是一个路径名称。此时这个路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,而且一次可以建立多个目录。

4.给目录添加写入权限

# chmod +w /data/varnish/

5. 更改属主和属组

# chown -R www:www /data/varnish/

三、配置

1.创建配置文件

 # vi/usr/local/varnish/etc/varnish/www.vcl

 backend www{             #定义后端服务器名
 .host ="192.168.9.203";   #定义后端服务器IP
 .port ="80";              #定义后端服务器端口
}

 

#定义访问控制列表,充许那些IP清除varnish 缓存
acl local {
 "localhost";
 "127.0.0.1";
}

 

判断host请求针对那个后端服务器
sub vcl_recv {
 if (req.http.host ~ "^(www.)?test.com$") { #泛域名的写法"^(.*.)?test.com$"
  set req.backend = www;
 }
  else {
  error 404 "Unknown HostName!";#如果都不匹配,返回404错误
 }

 

 

 

启动:

# /usr/local/varnish/sbin/varnishd -n /usr/local/varnish/vcache/-f /usr/local/varnish/etc/varnish/default.vcl -a 0.0.0.0:80 -smalloc,256m -T 127.0.0.1:808

-f:指定配置文件路径

停止:

pkill varnishd


--------------------------------------------------------------------------------------------------

centos5.5下varnish的配置

1. 
     系统更新yumupdate
2.       安装ncurses(主要是用于安装varnishstat等几个命令用)
Yum –y install ncurses-devel
3.       安装所需软件pcre
./configure  --prefix=/usr/local/pcre
Make
Make install
4.      安装telnet  telnet-server(在管理控制varnish时需要用到起)
Yum –y install telnet-server
5.       创建www用户和组,以及vasrnish缓存文件存放目录

6.       创建varnish日志目录
Mkdir –p /var/log/varnish
Chmod +w /var/log/varnish
Chown –R www:www /var/log/varnish
7.       编译安装varnish
Cd  /usr/local/src
tar –xvzf varnish-2.1.2.tar.gz
cd varnish-2.1.2
export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
./configure –prefix=/usr/local/varnish
Make &&make install
8.       创建varnish配置文件
Vi  /usr/local/varnish/vcl.conf
backend rzmsserver { 
.host = "192.168.1.27"; 
.port = "80"; 
       .probe = {
       .timeout = 50 ms;
       .interval = 5s;
       .window = 10;
       .threshold = 8;
       .request =
       "GET /UserLogin.aspx HTTP/1.1"
       "Host: 192.168.1.27"
       "Connection: close"
       "Accept-Encoding: foo/bar" ;
       }

}

acl purge {
       “localhost”;
       “127.0.0.1”;
"192.168.1.27"/24;
}

sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return(lookup);
}

if (req.http.host ~ "^192.168.1.27") {
set req.backend = rzmsserver; 
if (req.request != "GET" &&req.request != "HEAD") {
return(pipe);
}
else {
return(lookup);
}
}
else {
error 404 "rzms Cache Server"; 
return(lookup);
}
}

sub vcl_hit {
if (req.request == "PURGE") {
set obj.ttl = 0s;
error 200 "Purged.";
}
}

sub vcl_miss {
if (req.request == "PURGE") {
error 404 "Not in cache.";
}
}

sub vcl_fetch {
if (req.request == "GET" && req.url~ "\.(txt|js)$") {
set beresp.ttl = 3600s;
}
else {
set beresp.ttl = 30d;
}
}
说明:
(1)、Varnish通过反向代理请求后端IP为192.168.0.5,端口为80的web服务器
(2)、Varnish允许localhost、127.0.0.1、192.168.0.***三个来源IP通过PURGE方法清除缓存;
(3)、Varnish对域名为192.168.1.27的请求进行处理,非192.168.1.27域名的请求则返回“rzms CacheServer”;
(4)、Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。之所以这样配置,是因为POST请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存;
(5)、Varnish对以.txt和.js结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。
9.       启动Varnish
ulimit -SHn 51200
/usr/local/varnish/sbin/varnishd–n /var/vcache -f/ usr/local/varnish/default.vcl-a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1024m–p user=www –p group=www -w 30000,51200,10 -T 127.0.0.1:3500 (–pclient_http11=on)未使用
说明:
-f 指定配置文件启动 
-a 监听本机的网卡的80端口
-T 指定本机的varnish管理端口
-s file 指定varnish缓存文件的位置以及大小
-w 指处理的最小请求数、最大请求数、超时时间
-g 组名
-u 用户名
-p client_http11=on 支持http1.1协议
-P(大P) /usr/local/varnish/var/varnish.pid指定其进程码文件的位置,实现管理。
10.       varnishncsa用来将Varnish访问日志写入日志文件
/usr/local/varnish/bin/varnishncsa–n /var/vcache –w /var/logs/varnish/varnish.log&
11.       通过 Varnish 管理端口進行管理(用 –help查看可用的指令)
/usr/local/varnish/varnishadm-T 127.0.0.1:3500 help
(1) 例如:清除具体URL地址:
/usr/local/varnish/bin/varnishadm-T 127.0.0.1:3500 url.purge /a/
(2) 例如:清除具体URL地址:
/usr/local/varnish/bin/varnishadm-T 127.0.0.1:3500 url.purge w*$
(3) 例如:清除所有缓存:
/usr/local/varnish-2.1/bin/varnishadm-T 127.0.0.1:3500 url.purge *$
12.       通过varnishstat监控varnish状态
/usr/local/varnish/bin/varnishstat–n var/vcache


转载请标明出处【Linux 代理缓存varnish安装配置】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论