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

Varnish的安装配置方法

wgethttp://repo.varnish-cache.org/source/varnish-3.0.0.tar.gztarzxfvarnish-3.0.0.tar.gzcdvarnish-3.0.0./configure?prefix/usr/local/varnishPKG_CONFIG_PATH/usr/li

wget http://repo.varnish-cache.org/source/varnish-3.0.0.tar.gz
tar zxf varnish-3.0.0.tar.gz
cd varnish-3.0.0
./configure ?prefix=/usr/local/varnish PKG_CONFIG_PATH=/usr/lib/pkgconfig

make
make install

cp redhat/varnish.initrc /etc/init.d/varnish
cp redhat/varnish.sysconfig /usr/local/varnish/etc/init

cd /usr/local/vernish
mkdir cache
mkdir log

 

default.vcl

backend webserver {
.host = “192.168.1.105″;
.port = “80″;
}

sub vcl_recv {
if (req.http.x-forwarded-for) {
#set req.http.X-Forwarded-For = req.http.X-Forwarded-For “, ” client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}

if (req.request != “GET” &&
req.request != “HEAD” &&
req.request != “PUT” &&
req.request != “POST” &&
req.request != “TRACE” &&
req.request != “OPTIONS” &&
req.request != “DELETE”) {
return (pipe);
}
if (req.request != “GET” && req.request != “HEAD”) {
return (pass);
}

#if (req.http.host ~ “^(.*).ixdba.net” || req.http.host ~ “^(.*).ixdba.cn”) {
# set req.backend = webserver;
# }

if (req.url ~ “\.(jsp|do|php)($|\?)”) {
return (pass);
} else {
return (lookup);
}
}

sub vcl_pipe {
return (pipe);
}

sub vcl_pass {
return (pass);
}

sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
return (hash);
}

sub vcl_hit {

return (deliver);
}

sub vcl_miss {
return (fetch);
}

sub vcl_fetch {
if (beresp.ttl <= 0s ||
beresp.http.Set-COOKIE ||
beresp.http.Vary == “*”) {
/*
* Mark as “Hit-For-Pass” for the next 2 minutes
*/
set beresp.ttl = 120 s;
return (hit_for_pass);
}
return (deliver);
}

sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = “HIT from 192.168.1.110″;
} else {
set resp.http.X-Cache = “MISS from 192.168.1.110″;
}
return (deliver);
}

 

配置daemon

#! /bin/sh
#
# varnish Control the Varnish Cache
#
# chkconfig: ? 90 10
# description: Varnish is a high-perfomance HTTP accelerator
# processname: varnishd
# config: /etc/sysconfig/varnish
# pidfile: /var/run/varnishd.pid

### BEGIN INIT INFO
# Provides: varnish
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start:
# Default-Stop:
# Should-Start: $syslog
# Short-Description: start and stop varnishd
# Description: Varnish is a high-perfomance HTTP accelerator
### END INIT INFO

# Source function library.
. /etc/init.d/functions

retval=0
pidfile=/usr/local/varnish/log/varnish.pid

exec=”/usr/local/varnish/sbin/varnishd”
reload_exec=”/usr/local/varnish/bin/varnish_reload_vcl”
prog=”varnishd”
cOnfig=”/usr/local/varnish/etc/init”
lockfile=”/usr/local/varnish/log/varnish.lock”

# Include varnish defaults
[ -e /usr/local/varnish/etc/init ] && . /usr/local/varnish/etc/init
start() {

if [ ! -x $exec ]
then
echo $exec not found
exit 5
fi

if [ ! -f $config ]
then
echo $config not found
exit 6
fi
echo -n “Starting Varnish Cache: ”

# Open files (usually 1024, which is way too small for varnish)
ulimit -n ${NFILES:-131072}

# Varnish wants to lock shared memory log in memory.
ulimit -l ${MEMLOCK:-82000}

# $DAEMON_OPTS is set in /etc/sysconfig/varnish. At least, one
# has to set up a backend, or /tmp will be used, which is a bad idea.
if [ "$DAEMON_OPTS" = "" ]; then
echo “\$DAEMON_OPTS empty.”
echo -n “Please put configuration options in $config”
return 6
else
# Varnish always gives output on STDOUT
daemon ?pidfile $pidfile $exec -P $pidfile “$DAEMON_OPTS” > /dev/null 2>&1
retval=$?
if [ $retval -eq 0 ]
then
touch $lockfile
echo_success
echo
else
echo_failure
echo
fi
return $retval
fi
}

stop() {
echo -n “Stopping Varnish Cache: ”
killproc -p $pidfile $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
stop
start
}

reload() {
if [ "$RELOAD_VCL" = "1" ]
then
$reload_exec
else
force_reload
fi
}

force_reload() {
restart
}

rh_status() {
status -p $pidfile $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

configtest() {
if [ -f "$VARNISH_VCL_CONF" ]; then
$exec -f “$VARNISH_VCL_CONF” -C -n /tmp > /dev/null && echo “Syntax ok”
else
echo “VARNISH_VCL_CONF is unset or does not point to a file”
fi
}

# See how we were called.
case “$1″ in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
configtest)
configtest
;;
*)
echo “Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}”

exit 2
esac

exit $?

 

/usr/local/varnish/etc/init启动选项

NFILES=131072
MEMLOCK=82000
DAEMON_OPTS=”-a 192.168.1.110:8888 \
-T 192.168.1.110:200 \
-f /usr/local/varnish/etc/varnish/default.vcl \
-u root -g root \
-s file,/usr/local/varnish/cache/varnish.bin,256M”

 


推荐阅读
  • TCP协议中的可靠传输机制分析
    本文深入探讨了TCP协议如何通过滑动窗口和超时重传来确保数据传输的可靠性,同时介绍了流量控制和拥塞控制的基本原理及其在实际网络通信中的应用。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 拨打电话时遇到‘正在通话’或无人接听的情况解析及解决方法
    当您尝试联系他人时,可能会遇到电话提示‘正在通话’或是虽然接通但无人应答的情况。本文将详细解释可能的原因,并提供相应的解决策略。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • 如何在PyCharm中配置Python脚本的默认模板
    本文介绍如何在PyCharm中设置Python脚本的默认模板,以便每次创建新的.py文件时自动填充预设内容,提高开发效率。 ... [详细]
  • 当需要确保对象的状态在创建后不可更改时,使用记录(Record)类型是一个理想的选择。本文探讨了如何通过记录类型实现对象的不可变性,并提供了一个简单的示例来说明其用法。 ... [详细]
  • 本文详细介绍了FLV播放器的构建过程,包括如何解析FLV标签并将这些标签传递给解码器,以及如何在Qt环境中注册共享指针的信号和槽机制。 ... [详细]
  • 团支部的概念及其职能
    本文详细介绍了团支部的基本概念、组织结构以及其在共青团体系中的重要职能。 ... [详细]
  • 在开发一个网页音乐播放器时遇到问题,需要从不同源读取MP3文件的ID3标签信息,包括流派、歌手和歌曲名称等。尝试使用PHP未果后转而考虑使用JavaScript进行跨域读取,但不清楚具体配置方法,寻求技术指导。 ... [详细]
  • 探索《冯诺依曼传》:天才与时代的交响
    本文深入探讨了《冯诺依曼传》,通过分析这位20世纪杰出科学家的生平,揭示其对现代科技及理论科学的深远影响。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 随着市场需求的增长,各行业对兼职人员的需求日益增加。无论是本地生活服务还是专业技能提供,兼职APP成为了连接供需双方的重要桥梁,有效地提升了信息透明度和服务效率。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
author-avatar
2335286cc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有