如何让varnish启动时使用自定义的varnish配置文件

如何让varnish启动时使用自定义的varnish配置文件,第1张

CentOS中方法如下:

vi /etc/sysconfig/varnish

修改如下部分中的-f参数值即可:

DAEMON_OPTS="-a :80 \

-T localhost:6082 \

-f /etc/varnish/default.vcl \

-S /etc/varnish/secret \

-s malloc,256m"

安装Varnish网站缓存加速(Linux系统):

1、创建www用户和组,及Varnish缓存文件存放目录(/var/vcache):

/usr/sbin/groupadd

www -g 48

/usr/sbin/useradd -u 48 -g www www

mkdir -p /var/vcache

chmod

+w /var/vcache

chown -R www:www

/var/vcache

2、创建Varnish日志目录(/var/logs/):

mkdir

-p /var/logs

chmod +w /var/logs

chown -R www:www

/var/logs

3、编译安装varnish:

wget

warnish官网下载

tar

zxvf varnish-1.1.2.tar.gz

cd varnish-1.1.2

./configure

--prefix=/usr/local/varnish

make &&make

install

4、创建Varnish配置文件

vi

/usr/local/varnish/vcl.conf

输入以下内容:

引用

backend myblogserver {

set backend.host =

"192.168.0.5"

set backend.port = "80"

}

acl purge {

"localhost"

"127.0.0.1"

"192.168.1.0"/24

}

sub vcl_recv {

if (req.request ==

"PURGE") {

if (!client.ip ~ purge) {

error 405 "Not allowed."

}

lookup

}

if (req.http.host ~ "^blog.s135.com") {

set

req.backend = myblogserver

if (req.request != "GET"

&&req.request != "HEAD") {

pipe

}

else {

lookup

}

}

else {

error 404 "Zhang Yan Cache

Server"

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 obj.ttl = 3600s

}

else {

set obj.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对域名为blog.s135.com的请求进行处理,非blog.s135.com域名的请求则返回“Zhang

Yan Cache

Server”;

(4)、Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。之所以这样配置,是因为POST请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存;

(5)、Varnish对以.txt和.js结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。

5、启动Varnish

ulimit

-SHn 51200

/usr/local/varnish/sbin/varnishd -n /var/vcache -f

/usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s

file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T

127.0.0.1:3500 -p

client_http11=on

6、启动varnishncsa用来将Varnish访问日志写入日志文件:

/usr/local/varnish/bin/varnishncsa

-n /var/vcache -w /var/logs/varnish.log

&

7、配置开机自动启动Varnish

vi

/etc/rc.local

在末尾增加以下内容:

引用

ulimit -SHn 51200

/usr/local/varnish/sbin/varnishd

-n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s

file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T

127.0.0.1:3500 -p client_http11=on

/usr/local/varnish/bin/varnishncsa -n

/var/vcache -w /var/logs/youvideo.log

&

8、优化Linux内核参数

vi

/etc/sysctl.conf

在末尾增加以下内容:

引用

net.ipv4.tcp_fin_timeout =

30

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_syncookies =

1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle =

1

net.ipv4.ip_local_port_range = 500065000

你运气好,刚好我也在用这个。。。

很遗憾,这软件完全在你自己的调试和配置。所以只能给你下面这些东西,希望能够帮助你。

下面是命令阐述:

varnishd [-a address[:port]] [-b host[:port]] [-d] [-F] [-f config]

[-g group] [-h type[,options]] [-i identity] [-l shmlogsize] [-n name] [-P file] [-p param=value] [-s type[,options]] [-T address[:port]] [-t ttl] [-u user] [-V] [-wmin[,max[,timeout]]]

DESCRIPTION(描述)

Varnishd进程接收客户端的HTTP请求,然后把请求发送给后端服务器,缓存后端 服务器返回的内容,这样更好的满足以后相同的请求。

OPTIONS(选项)

-a address:[:port][,address]

监听指定的IP地址和端口的请求。地址可以是主机名(“localhost”),或者一 个IPV4(“127.0.0.1”),和IPV6(“[::1]”),如果地址没有明确指定,varnishd将监听所 有可用的IPV4和IPV6地址。如果端口没有指定,那么varnishd默认监听/etc/services 中的HTTP对应的端口。更多的端口和地址使用逗号分隔。

-bhost[:port]

指定后端服务器的地址和端口,如果没有指定端口,默认的是8080.

-C编译VCL代码成C语言,然后退出,指定VCL文件用-f参数。

-d开启debug模式。主进程在前段启动,提供一个CLI界面用于标准输入和输出,子进程必须通过CLI命令启动。如果结束主进程,那么子进程也会结束。

-F 在前端运行。

-f config 使用指定的VCL配置文件代替系统默认的。参见VCL(7)

-ggroup 指定varnishd子进程使用的用户组。

-htype[,options] 指定hash算法。

-i identity 指定varnishd server的身份。

-l shmlogsize 指定shmlogfile的大小,单位可以使用‘k’和‘m’,默认是80M, 如果指定比8M小,那是不明智的。

-n name为这个实例指定一个名字。

-P file指定pidfile,用于保存PID信息。

-p param=value 设定指定参数的值,查看运行时的阐述列表

-S file访问管理端口用到的安全认证文件的路径

-s type[,options] 使用指定的存储后端,查看存储列表获得支持的存储类型。可以多次使用此选项指定不同的存储类型。

-T address[:port]

提供一个管理接口的地址和端口,通过管理接口查看管理命令。

-t ttl 指定最小的TTL给cache中的内容。这是一个捷径设置default_ttl run-time 选项。

-u user 指定运行varnishd子进程的用户。

-V 显示varnishd的版本,然后退出。

-w min[,max[,timeout]]

指定线程最小和最大空闲时间。这是一个设置thread_pool_min和thread_pool_max、thread_pool_timeout的捷径。

如果只有一个值被指定,那么thread_pool_min和thread_pool_max都是用这个值。Thread_poll_timeout会失效。

Hash Algorithms(hash算法)

以下hash算法是可用的:

Simple_list一个简单的doubly-linked列表,不推荐生产环境应用。

Classic[,buckets] 一个标准的hash表,默认使用这个。

Critbit xxx very nice。

Storage Types(存储类型)

下面的存储类型是可用的:

malloc[,size]

存储目标分配给malloc(3)。

Size参数指定最大分配给varnishd的内存,size默认的单位是bytes。除非你指定以下单位

K \\kibibytes

M \\membibytes

G \\gibibytes

T \\tebibytes

默认没有限制

File[,path[,size[,granularity]]]

把存储目标分配给一个文件,这个是默认的。

Path参数指定文件名和路径,或者path指定一个目录,varnishd会自己创建文件。默认在/tmp目录。

Size参数指定最大分配给varnishd的内存,size默认的单位是bytes。除非你指定以下单位

K \\kibibytes

M \\membibytes

G \\gibibytes

T \\tebibytes

%使用所属文件系统空闲空间的百分比。

默认是50%

如果文件已经存在,那么varnishd会缩减或者扩大backing文件到指定size。

注意:如果varnishd需要创建或者扩大一个文件,之前没有设置好空间的话,可能会产生碎片,这样会影响性能。在分配文件之前使用dd命令来创建文件,这 样可以尽量减少碎片。

Granularity参数指定分配的间隔尺寸,默认的单位是字节,你可以自定义单位,除了使用%。

默认的间隔尺寸就是虚拟内存相同。如果有太多的小文件,那么空间就会减少。

Management Interface(管理接口)

如果指定了-T选项,varnishd将提供一个命令行的管理接口在指定的地址和接口。西面的命令式可以用的:

help [command]

显示可用命令列表

param.set param value

给参数设定值,参见参数列表

param.show [-l] [param]

显示运行时参数和值的列表

如果使用-l选项,列表会对每个参数做一些描述。

如果param被指定,那么只显示指定的param。

ping [timestamp]

Ping varnishd的进程,查看连接是否存活。

purge field operator argument [&&field operator argument […]]

匹配purge表达式的内容,马上失效。

purge.list

显示purge列表

所有在cache中的请求目标和purge.list相比,如果cache中的目标比匹配的purge list旧,就会考虑清楚这些旧的目标,从后端服务器获取新的代替。

如果一个清洗表达式比cache中的目标就,那么就会从purge list中删除它们。

purge.url regexp

使缓存中匹配表达式的URL马上失效。

quit

关闭varnish admin 的连接。

start

如果varnish cache程序没有运行,在这里可以启动这个进程。

stats

显示简要的统计信息。

所有的数据是服务器启动后开始统计,更好的观察方式是使用varnishstat工具。

status

检查varnish cache进程的状态。

stop

停止varnish cache进程

url.purge regexp

弃用,使用purge.url代替。

vcl.discardconfigname

丢弃指定的VCL配置文件。

vcl.inlineconfigname vcl

创建一个vcl配置文件,configname是配置文件的名字,vcl 是配置文件的VCL代码。

vcl.list

显示当前可用的vcl列表,active表示当前使用的配置文件。

vcl.loadconfigname filename

创建一个新的配置文件,configname是配置的名字,filename是vcl配置文件的路径和名字。

vcl.show config

显示vcl配置文件的源代码。

vcl.use configname

对所有新的请求指定vcl配置文件,已经存在的请求使用抵达时的配置文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7893734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存