使用zc.buildout构建和/或配置Varnish Cache
项目描述
Varnish recipe for buildout
plone.recipe.varnish 是一个 zc.buildout recipe,用于安装 Varnish。尽管名称中包含 Plone 名称,但此配方并没有针对 Plone 特定的内容:它对非 Zope 网站同样有效。
请注意:此配方的 6.x 版本现在“支持”Varnish 6.0 LTS。已移除对旧版不支持或中间开发版本的模板生成支持。Varnish 软件(公司)已切换到每半年一次的固定时间框发布周期,不再进行严格的质量保证,从中挑选一个认为稳定的 LTS 版本。
如果您有自定义 vcl 并/或想要使用当前的配方,可以将 plone.recipe.varnish 锁定到 2.x 版本,或者您可以使用此 6.x 版本的配方,但提供自定义下载 URL 和自定义 vcl 文件的相关参数。
配置它非常简单。例如
[varnish-build] recipe = plone.recipe.varnish:build [varnish-configuration] recipe = plone.recipe.varnish:configuration backends = 127.0.0.1:8081 [varnish-script] recipe = plone.recipe.varnish:script bind = 127.0.0.1:8000 cache-size = 512M
此配置了三个 buildout 部分
- varnish-build
它将下载、编译和安装 varnish,
- varnish-configuration
它生成 VCL 配置文件,将请求发送到 127.0.0.1:8081 的后端,
- varnish-script
它运行 Varnish,配置为监听 127.0.0.1:8000 的请求,使用 512 兆字节的缓存。
在您的 buildout 的 bin 目录中创建了一个 varnish 启动命令的包装脚本。
请注意,此配方生成的配置专门针对最新的 LTS 版本的 Varnish,版本 6.0.x。
使用此配方时需要关注的区域
尽管此配方试图为大多数参数提供合理的默认值,以便于直接放置,但仍有一些需要了解的专业领域,以了解和测试高性能且稳定的 Varnish 设置。
如果您使用此配方,您将使用 buildout,对于“单个”项目的常见设置是您的 Varnish 只为单个 Plone 网站缓存。缓存的一个固有问题是缓存失效:当一个编辑器更改一个页面时,您需要确保下一次为该内容项从后端(Plone)网站获取新鲜的内容。Plone 的缓存设置可以配置为向 Varnish 发送更改内容的清除请求。计算哈希在此类型清除中起着至关重要的作用:如果客户端请求的计算哈希与清除请求上的计算哈希不同,清除将失败。
有一些巧妙的替代清除请求设置,可以提高新鲜度,但您必须真正了解自己在做什么,到目前为止的经验是,更复杂的方案在 Varnish 升级之间已经中断。
特别是如果您有多个后端并且您让 Varnish 进行负载均衡,不要忘记启用 grace-sick 和 grace-healthy 选项。当配方注意到这些参数时,它将自动在生成的 vcl 中启用健康检查设置。grace 帮助在您的后端临时关闭时临时提供页面。
一旦在传入请求中出现cookie,Varnish将不会缓存请求,甚至将URL存储在“击中通过”缓冲区中,以便后续类似请求不会因为等待在后端请求队列中而延迟。生成的vcl有一个函数,在将请求传递到后端之前从传入请求中删除大部分无关的cookie,以提高缓存命中率。__ac cookie是一个显著的例外,这表示Plone用户已登录,应禁用缓存。
您可以通过学习如何使用varnishlog和查询语言来详细监控Varnish缓存操作,但如果您以前从未使用过此工具,这至少需要几个小时。仅仅在varnishlog中随便看看,看到命中或未命中,很容易得出错误的结论。
虚拟主机
Varnish通过根据传入请求的头部选择不同的后端服务器来支持虚拟主机。您可以通过backends选项配置后端。
[varnish-configuration] backends = plone.org:127.0.0.1:8000 plone.net:127.0.0.1:9000
这将生成一个配置,将plone.org主机的所有流量发送到运行在端口8000的后端服务器,而plone.net主机的所有流量则发送到端口9000。
Zope 2主机(使用虚拟主机怪物)
如果您使用Zope 2作为后端服务器,您需要重写URL,以便Zope虚拟主机怪物(VHM)可以为您页面的链接生成正确的链接。这可以通过Apache或nginx等web服务器完成(位于Varnish的前面或后面),也可以由Varnish本身完成。
以下描述了三种选项。
选项1(Varnish之后的重写)
如果在一个位于Varnish之后的代理中生成这些VHM风格的URL(或者如果使用VHM的“映射”功能),不需要额外的Varnish配置。只需确保backends选项将流量引导到代理。
选项2(Varnish之前的重写)
如果在Varnish之前的代理中生成这些VHM风格的URL,只要URL中仍然保留了原始主机名,就不需要额外的Varnish配置。如果不保留主机名,您可以告诉Varnish根据“路径”而不是主机名来引导请求。例如
[varnish-configuration] backends = /VirtualHostBase/http/plone.org:80/Plone:127.0.0.1:8000 /VirtualHostBase/http/plone.net:80/Plone:127.0.0.1:9000
这将生成一个配置,将所有路径以/VirtualHostBase/http/plone.org:80/Plone开头的请求流量发送到运行在127.0.0.1端口8000的后端服务器,而所有路径以/VirtualHostBase/http/plone.net:80/Plone开头的请求则发送到端口9000。
选项3(Varnish内的重写)
要由Varnish生成这些VHM风格的URL,您可以使用zope2_vhm_map选项。以下是一个示例
[varnish-configuration] zope2_vhm_map = plone.org:/plone plone.net:/plone
这告诉我们,域名plone.org应映射到后端的/plone位置。通过结合backends选项中的信息,将生成一个varnish配置,正确映射URL。
负载均衡
Varnish通过为后端池配置一个director来支持负载均衡。此director以随机或轮询方式将无法由Varnish满足的传入请求发送到池中的后端。您可以通过balancer选项配置director。
[varnish-configuration] balancer = random
这将生成一个配置,将所有流量发送到director,如果请求的内容未被Varnish本身缓存,director将选择一个“随机”的后端服务器来满足请求。
plone.recipe.varnish参考
plone.recipe.varnish食谱执行以下操作之一:
- plone.recipe.varnish:build
从源编译varnish
- plone.recipe.varnish:configuration
生成VCL配置文件
- plone.recipe.varnish:script
在您的buildout内部生成一个包装脚本,将使用正确的配置启动Varnish。
从源构建varnish
构建基于 zc.recipe.cmmi - 因此,该食谱的所有参数在这里也都可用(但很少使用)。以下选项适用于 plone.recipe.varnish:build 的食谱部分。
有三个参数不同/额外
- url
用于下载 varnish 源的位置。默认为最新 LTS 版本。
- jobs
将并行作业数传递给 make,默认为 4。根据您的 CPU 资源进行调整。
- compile-vmods
布尔标志默认为 False,用于构建 Varnish 模块。默认情况下,Varnish 模块来自 Varnish 软件模块集合
VCL 配置生成器
以下选项适用于 plone.recipe.varnish:configuration 的食谱部分。
- backends
指定将处理(未缓存的)请求的后端或后端。后端的语法为
[<hostname>][/<path>]:<ip address>:<port>
可选的 hostname 和 path 允许您进行虚拟主机。如果指定了多个后端,则每个后端必须包含主机名或路径(或两者都包含),以便 Varnish 可以将匹配的请求定向到适当的后端。默认为 127.0.0.1:8080。
- balancer
如果包含并且设置为 random 或 round_robin,则此选项配置 varnish 以负载均衡由 backends 指令指定的服务器。可能的值:none(默认),round_robin 或 random。
- between-bytes-timeout
如果指定,此选项配置 Varnish 在从后端接收数据时等待字节之间的超时时间(以秒为单位)。Varnish 将在放弃之前等待这么长时间的字节。0s 的值表示永远不会超时。默认为 60s,符合 Varnish 的默认设置。
- bind
主机名和端口,Varnish 将在此处监听请求。默认为 127.0.0.1:8000。
- connect-timeout
如果指定,此选项配置 Varnish 连接到后端服务器时的连接超时时间(以秒为单位)。Varnish 将仅在这么长时间内尝试连接到指定后端,然后放弃。默认为 0.4s,符合 Varnish 的默认设置。
- cookie-pass
此列表由以下格式的行组成:cookie-match 和 urlexclude:"cookiematch":"urlexcludes"。如果 cookiematch 适用于 cookiename,则请求将直接传递到配置的后端,绕过任何缓存。另外,如果当前 URL 匹配 urlexcludes,则将删除 cookie,并将请求传递到后端。默认值针对 Plone 优化,一行:"auth_token|__ac(|_(name|password|persistent))=":"\.(js|css|kss)$" 因此,当您认证时,请求总是由 Plone 处理。当认证用户请求 js/css/kss 文件时,Plone 会将您视为匿名,因为没有 cookie 传递到 Plone。
- cookie-pass-not-exclude
如果 URL 匹配此正则表达式,则跳过 cookie-pass 排除规则。这对于像 ++resource++zmi 这样的 URL 很有用,该 URL 也要求对 js、css、… 等资源进行认证。
- cookie-whitelist
当处理 cookie-pass 并不匹配时,这意味着您是匿名用户,至少在默认的 cookie-pass 设置下是这样。在这种情况下,此白名单用于在请求上清理cookie数据。要发送到后端的cookie数据仅包括给定名称的cookie。默认值针对Zope2/Plone进行了优化:statusmessages __ac _ZopeId __cp auth_token。 __ac 和 auth_token cookie可能不需要,因为它们已经在 cookie-pass 列表中,但它们在这里是为了安全起见,以防您将 cookie-pass 设置自定义以不包括它们。如果您有自定义代码设置cookie并需要在后端读取它们,那么您必须将cookie名称添加到此列表中。
- first-byte-timeout
如果指定,此选项配置Varnish接收来自后端的第一字节的超时时间(以秒为单位)。Varnish将等待这么多秒,然后放弃。0s的值意味着Varnish永远不会超时。默认为300s。
- purge-hosts
指定用于清理ACL的主机名或IP地址。默认情况下,localhost 和后端允许清理。在此列出了其他允许的主机。
- vcl_recv,vcl_hit,vcl_miss,vcl_backend_fetch,vcl_backend_response,vcl_deliver,vcl_pipe,vlc_purge,vcl_hash,vcl_import,vcl_init,vcl_pass,vcl_synth
将任意VCL代码插入生成的配置中。
- verbose-headers
启用在响应中发送额外的头信息,以显示Varnish对请求和缓存状态的所作操作。对于调试缓存设置和优化非常有用。可能的值:on 或 off(默认)。
- zope2_vhm_map
为Zope服务器定义虚拟主机映射。这是一个包含hostname:ZODB位置条目的列表,指定虚拟主机网站在Zope内部的位置。
- zope2_vhm_port
定义用于VHM URL发送回客户端的虚拟主机映射端口。如果Varnish前面有其他端口映射,例如haproxy,则很有用。默认为绑定端口。
- zope2_vhm_ssl
如果指定,则将VHM URL映射到所有请求的https。可能的值:on 或 off(默认)。
- zope2_vhm_ssl_port
定义用于VHM URL发送回客户端的虚拟主机映射端口。如果Varnish前面有其他端口映射,例如haproxy,则很有用。默认为443。
- vcl-version
Varnish VCL格式版本。如果没有给出,默认为4.0。
- health-probe-*
后端健康探测设置。如果设置grace-healthy,则激活探测。
有关每个设置的详细说明,请参阅https://varnish-cache.org/docs/6.0/reference/vcl.html#probes。
health-probe-url:默认为/ok
health-probe-timeout:默认为5s
health-probe-interval:默认为15s
health-probe-window:默认为10
health-probe-threshold:默认为8
health-probe-initial:如果没有给出,Varnish将默认为threshold -1
- grace-healthy
在Varnish的上下文中,“Grace”意味着在必要时交付本应过期的对象。这可以发生是因为:(1)选择的后端管理器已关闭,或者(2)另一个线程已经对后端发起了一个尚未完成的请求。
如果后端是健康的,接受这个秒数以前的对象。客户端将收到的内容不会超过其TTL秒数。
格式:数字后跟时间单位:ms(毫秒)、s(秒)、m(分钟)、h(小时)。
默认为None。如果将其设置为None,则禁用Grace功能。
- grace-sick
如果后端不健康,接受这个旧的对象。参见grace-healthy。
格式:数字后跟时间单位:ms(毫秒)、s(秒)、m(分钟)、h(小时)。
默认为600s。应大于grace-healthy。
要测试生成的配置的语法正确性,请运行varnishd -C -f ./parts/varnish-configuration/varnish.vcl。
创建启动Varnish的脚本
以指定的设置以守护进程或前台模式启动Varnish。这些选项适用于recipe部分plone.recipe.varnish:script。
- bind
主机名和端口,Varnish 将在此处监听请求。默认为 127.0.0.1:8000。
- build-part
引用buildout部分以获取那里的设置。默认为varnish-build。将其设置为false以关闭它。
- cache-location
自定义Varnish文件存储的位置。此选项仅适用于与file或persistent缓存类型选项一起使用。默认使用位于相关部分目录内(例如parts/varnish/storage)的名为storage的文件。更改默认位置可以将存储放在具有更快读取速度的地方(例如RAM磁盘)。
- cache-size
缓存大小(32位系统限制为2G)。默认为256M。
- cache-type
指定与Varnish一起使用的缓存存储类型。可能的值:file(每个对象的存储从由文件支持的区域分配),malloc(每个对象的存储使用malloc分配;内存中),或persistent(截至Varnish 2.1.4为实验性)。默认为file。
- configuration-file
要使用的Varnish VCL配置文件的路径。默认为从configuration-part设置生成的文件。如果没有生成配置,则此设置是必需的。
- configuration-part
命名用于获取设置的buildout部分。默认为varnish-configuration。
- daemon
要使用的varnish守护进程varnishd的文件和路径。如果没有提供,它将查找build部分(参见build-part设置)并使用其location设置加字符串/sbin/varnishd。如果没有build部分,则默认为/usr/sbin/varnishd - 在许多Unix系统中最常见的位置。如有必要,请调整。
- group
varnish在接收任何请求之前应切换到的组的名称。默认为主用户组。
- mode
指定varnish守护进程是否应在daemon或foreground模式下运行。后者对于由daemontools或runit等服务监督工具运行的varnish很有用。默认为daemon。
- name
如果指定,则设置varnish实例的名称(默认为主机名)。
来自varnishd的man页
除了其他用途之外,此名称用于构建varnishd存储临时文件和持久状态的目录名称。如果指定的名称以正斜杠开头,则将其解释为用于此目的的目录的绝对路径。
- runtime-parameters
运行时参数配置选项。可用的完整选项列表可以在您版本的varnish的manpage varnishd(1)中找到。例如包括thread_pool_max、thread_pool_min、sess_timeout。
- telnet
如果指定,将设置Varnish通过telnet界面监听命令的主机名和端口。
- script-filename
在buildout:bin-directory中的启动脚本文件名称。默认为此构建部分名称。
secret-file
在Varnish 4.X中,telnet界面默认不再可用,除非进行身份验证。已设置一个预共享密钥机制,该机制要求varnish守护进程和通过telnet(如varnishadm工具)建立的客户端连接都必须有一个共享密钥以进行身份验证。默认情况下,如果没有指定secret-file,则无法对telnet界面进行身份验证。
要禁用此安全功能(并回到黑暗的Varnish 2 & 3时代),请使用secret-file = disabled。这不被推荐。
要启用secret-file,提供文件系统上文件的路径,最好具有随机内容,并且对varnish守护进程和类似varnishadm的命令行实用程序都可用。
一个生成此类文件的示例buildout部分可以是
[varnish-secret] recipe = plone.recipe.command command = dd if=/dev/random of=${buildout:directory}/var/varnish_secret count=1 chmod 600 ${buildout:directory}/var/varnish_secret将secret-file指定为此文件的路径将在varnish守护进程启动时传递密钥。之后,您可以使用带有参数-T host:port -S /path/to/varnish_secret的varnishadm连接到管理员telnet界面。
- user
varnish在接受任何请求之前应切换到的用户名。默认为nobody。
示例
使用系统varnish在/usr/sbin/varnishd,在./bin/varnishd中生成启动脚本,使用./parts/varnish-configuration/varnish.vcl中的VCL文件。
[buildout] parts = varnish-script varnish-configuration [varnish-script] recipe = plone.recipe.varnish:script [varnish-configuration] recipe = plone.recipe.varnish:configuration
变更日志
6.0.13 (2024-04-22)
添加cookie-pass-not-exclude配置。默认值包含++resource++zmi,这是Zope 5.9+(Plone 6.0.10+)所需的。[mamico]
使用Varnish 6.0.13 LTS [mamico]
添加vcl_synth选项以插入任意vcl。[mamico]
6.0.11 (2023-08-18)
使用Varnish 6.0.11 LTS。 [maurits]
允许配置除文件和malloc之外的其他存储。[mamico]
BUGFIX: secret filename case sensitive [mamico]
删除使vhm_map生成再次工作的问题的奇怪检查。修复了https://github.com/collective/plone.recipe.varnish/issues/19 [agitator]
6.0.10 (2022-02-20)
使用Varnish 6.0.10 LTS。 [fredvd]
将默认varnish下载URL设置为https。 [maurits]
修复了阻止mp3和mp4像其他大文件一样管道的拼写错误。[maurits]
6.0.9 (2021-12-15)
重新发布6.0.0b4为版本6.0.9。 [fredvd]
6.0.0b4 (2021-12-08)
使用Varnish 6.0.9 LTS。 [fredvd]
构建VMODS [mamico]
6.0.0b3 (2020-07-15)
BUGFIX: omitting health-probe-url resulted in .url = “None”; [frisi]
6.0.0b2 (2020-07-14)
添加配置后端健康检查的选项 [frisi]
更新健康检查的文档。[frisi]
6.0.0b1 (2020-02-26)
BREAKING: only support Varnish version 6.0 LTS and generates config (VCL) for this version only as well. If you want to use a different Varnish version with this recipe to use the software build and runner setup, provide your own VCL and a custom link to a Varnish download url. (Closes #70) [fredvd]
更新到Varnish 6.0.6 LTS安全版本。[fredvd]
设置默认的vcl_hash值,以防止回退到默认的default.vcl哈希函数被激活。这将导致清除操作失败,因为来自您的公共dns/主机名的哈希值永远不会与Plone进行清除请求时的内部主机名匹配。(关闭#61,参考#70)
添加一个选项来修改健康检查的URL,默认为Plone的/ok视图。[erral]
在软件安装的varnish-build/cmmi阶段禁用构建sphinx文档。[fredvd]
更新Varnish版本。任何低于6.0.X的版本都官方不再维护。更新版本6和6.0到最新版本6.0.4 [fredvd]
设置默认版本为版本6,如果没有提供URL,则下载6.0.4。[fredvd]
2.3.0 (2019-03-26)
简化了不使用plone版本的测试buildout设置。[maurits]
更新默认的varnish 4版本到最新的4.1.11。[maurits]
从buildout配方值中再次获取vcl_hash自定义代码插入。它已在varnish模板中定义,但从未被提取。[fredvd]
初始Varnish 6支持。[cleberjsantos]
修复用于vcl_purge的自定义vcl代码插入。[mamico]
修复了默认的grace-sick设置。[mamico]
2.2.0 (2018-01-05)
初始Varnish 5支持。已添加vcl-version参数来控制Varnish VCL语法格式版本。[maurits, jensens, cleberjsantos]
2.1.0 (2017-12-18)
默认使用4.1版本(4.0是之前的默认版本)。[maurits]
2.0 (2017-12-15)
当使用varnish 4.1时,使用varnish 4.1.9。4.0仍然是默认版本。[cleberjsantos, maurits]
修复COOKIE_PASS_DEFAULT的默认值,使其不匹配任何其他URL,而不仅仅是预期的静态资源。[petschki]
2.0a8(2017-11-03)
新功能:将启动脚本重构为Jinja2模板。[petschki]
修复失败的travis测试,bin/createcoverage尝试打开浏览器。[instification]
在测试要清除哪些URL之前,去除了查询字符串。https://github.com/collective/plone.recipe.varnish/issues/42 [instification]
修复用于vcl_backend_fetch和vcl_backend_response的自定义vcl代码插入。更新文档。[petschki]
修复在varnish_version=4.1中用于被监禁用户的参数。[petschki]
更新varnish_version的文档,该版本仅在构建部分有意义。[petschki]
2.0a7(2017-08-16)
将默认下载改为.tgz而不是.tar.gz。由于某种原因,它们在最后一个版本发布后已被重命名。[maurits]
2.0a6(2017-08-15)
更新默认URL到varnish安全发布。还更新了这些URL,不使用repo.varnish-cache.org域名,因为那些链接将在2017年8月31日停止工作。[maurits]
修复VCL director:从round-robin更改为round_robin,重构了测试。[cleberjsantos]
2.0a5(2016-08-29)
为varnish_version选项制作了三个可能的值。4.0(使用4.0.3)、4.1(使用4.1.3)、4(使用4.1.3)。目前4.0是默认值。4预计在发布并发现工作正常后更新到4.2.x。[maurits]
修复:在启动时向varnishd传递空参数以禁用secret-file身份验证。[fredvd, nutjob4life]
2.0a4(2016-02-23)
新功能:在脚本部分添加secret-file选项,以便您可以使用varnishadm与varnish通信。请参阅文档了解用法和secret-file生成。[fredvd]
修复:在两个‘:’处分割,以将raw_backends的最大值设为3个部分。[jensens]
2.0a3(2015-12-22)
重新发布:2.0a2是一个棕色包装发布。[jensens]
2.0a2(2015-12-22)
修复:修复了配方脚本部分的守护进程位置(始终使用/usr/bin/varnishd)。[fredvd]
修复测试,下载Varnish 4.0.3作为下载。[fredvd]
2.0a1(2015-03-02)
重构整个配方和vcl生成代码的整理和清理。
跳过对 varnish < v4.0 的支持,使用 1.x 系列为旧版 varnish 提供 support。
不要在 Python 中生成 vcl 代码
使用 jinja2 模板为 vcl
将 vcl 生成重构为独立的可测试类
将 fixup cookies 转换为 cookie 白名单
将配方拆分为 3 部分:构建、配置生成和脚本生成。
[jensens]
1.4 (未发布)
修复测试以在 Varnish 2 或更高版本上运行。[cleberjsantos]
修复 VCL 模板以兼容 Varnish 3。[cleberjsantos]
为 varnish_version 3 添加 saint-mode。[cleder, cleberjsantos]
为 varnish_version 3 设置默认的下载-url。[cleder]
修复 varnish_version 3 的字符串连接问题。[damaestro]
添加 zope2_vhm_port 以能够在 VHM URL 中显式定义响应端口。[damaestro]
添加 zope2_vhm_ssl 以使用 VHM 渲染 https URL。[damaestro]
添加 zope2_vhm_ssl_port 以能够在 VHM URL(对于 ssl)中显式定义响应端口。[damaestro]
更新 verbose-headers 以使用上游调试示例:https://www.varnish-cache.org/trac/wiki/VCLExampleHitMissHeader [damaestro]
添加 cookie-fixup 以更好地支持 Plone 内容的缓存,并确保认证内容不被缓存。http://developer.plone.org/hosting/varnish.html [damaestro]
更新 VCL 模板以更加灵活。[damaestro]
1.3 (2013-08-21)
添加 varnish_version 选项,以控制 varnish 版本 >= 3 的 vcl 生成。[rnix]
1.2.2 (2012-10-14)
移动到 https://github.com/collective/plone.recipe.varnish [maurits]
1.2.1 (2011-05-13)
更新已知的良好 Varnish 版本为 2.1.5。[elro]
添加 vcl_recv、vcl_hit、vcl_miss、vcl_fetch、vcl_deliver、vcl_pipe 选项以插入任意的 vcl。[elro]
1.2 (2011-01-11)
添加新的选项 cache-type 和 cache-location 以指定 Varnish 存储的类型(例如使用 malloc 进行替代存储)并设置存储的自定义位置。[davidjb]
添加额外的单元测试以检查 Varnish 初始化脚本。[davidjb]
添加新的选项 'purge-hosts'。允许额外的地址用于清除。[jensens]
添加 name 选项,以定义 varnishd 存放临时文件的目录并识别实例,当使用 varnishlog 或 varnishstat 时。[fRiSi]
修复 verbose-headers=on 的配置(在新版 varnish 中,vlc_fetch 的上下文为 bresp 而不是 obj)[fRiSi]
1.1 (2010-08-05)
将默认缓存大小从 1G 更改为 256M。[hannosch]
更新 Varnish 到 2.1.3。[hannosch]
1.1b1 (2010-04-25)
更新广告的 Varnish 版本为 2.1 并调整配置。[hannosch]
纠正 daemon 设置的文档,并移除默认值。[hannosch]
删除已废弃的构建配方。[hannosch]
添加基本测试基础设施和一个简单的 buildout 测试。[hannosch]
使用内置的 set 类型而不是已废弃的 sets 模块。此配方现在需要至少 Python 2.4。[hannosch]
添加在 varnish 运行器配置中配置运行时参数的能力,并在文档中添加了相关信息。[benliles]
提高生成配置的可读性。[ldr]
1.0.2 (2010-01-18)
更新建议的 Varnish 版本为 2.0.6。[hannosch]
进一步清理文档。[hannosch, vincentfretin]
1.0.1 (2009-11-27)
公开与实例配方生成的配置兼容的已知良好 Varnish 版本的 download-url。[hannosch]
在生成的 vcl 文件中始终使用制表符。[hannosch]
清理空白和文档。[hannosch]
1.0 (2009-08-27)
使vcl模板构建其acl purge部分。目前,vcl只允许来自本地主机的purge请求。如果没有这个功能,来自除localhost之外的其他主机的任何PURGE请求都将被拒绝。请参阅http://varnish.projects.linpro.no/wiki/VCLExamplePurging [rockdj]
添加了从构建out中的每个选项设置各种Varnish超时(connect_timeout、first_byte_timeout和between_bytes_timeout)的功能。默认值设置为Varnish默认值0.4秒用于connect_timeout,60秒用于between_bytes_timeout。first_byte_timeout的时间设置为300秒,符合plone.recipe.varnish 1.0rc9。 [rockdj]
为传入的虚拟托管URL设置req.http.host。如果没有设置此值,则来自除localhost(acl purge列表中的唯一主机)之外的主机发送的purge请求将导致404消息。请参阅http://davidjb.com/blog/2009/01/plone-varnish-configuration-cache-hits-purge-fails [rockdj]
1.0rc11(2009-06-27)
重新引入了grace选项。Varnish文档中关于grace的说明:“varnish在从后端检索对象的同时提供陈旧(但可缓存的)对象”。问题是“default_ttl”值为120秒(请参阅varnish 2.0.4中的bin/varnishd/mgt_param.c)。为createObject url添加了特殊规则,使其不查找缓存。 [vincentfretin]
1.0rc10(2009-06-26)
1.0rc9生成了带有balancer=none的损坏配置 [vincentfretin]
1.0rc9(2009-06-25)
不要设置req.grace和obj.grace。请参阅http://vincentfretin.ecreall.com/articles/varnish-user-be-careful [vincentfretin, maurits]
从默认模板中删除了header_hit_deliver和header_hit_notcacheable调试消息。在http://varnish.projects.linpro.no/ticket/310未修复之前,在vcl_hit期间分配给对象是不安全的。另请参阅http://kristian.blog.linpro.no/2009/05/25/common-varnish-issues。 [hannosch]
更新到引用Varnish 2.0.4。在后端定义中添加了300秒的first_byte_timeout值。这是自Varnish 2.0.3以来的新选项,默认设置为60秒。这可能是Plone站点中某些编辑操作的不合适值。 [hannosch]
1.0rc8(2008-02-12)
从模板中删除了自定义的vcl_hash。将Accept-Encoding头添加到缓存中会有效地破坏清除,因为没有人会包括这些头在内的PURGE请求。为了安全起见,我们只是从所有传入请求中删除Accept-Encoding头。 [wichert]
1.0rc7(2008-11-26)
更明确地关于废弃:build入口点。 [wichert]
使:instance指定符成为可选的:在:build已删除后,我们可以废弃:instance。 [wichert]
1.0rc6(2008-09-22)
废弃plone.recipe.varnish:build,改为zc.recipe.cmmi:在这里重复其逻辑没有意义。 [wichert]
添加了在varnish.vcl中启用详细头部的功能。这对于缓存设置的调试非常有用。请参阅README.txt。 [jensens]
更好地处理没有设置可执行位或为svn导出的源。 [wichert]
1.0rc5版本有损坏,已被撤回。目前,主干只能与Varnish 2.0-beta1及以后的版本一起使用。 [hannosch]
1.0rc5(2008-04-27)
管道是邪恶的:它将整个连接管道到后端,这意味着如果使用HTTP管道,varnish将不再处理任何其他请求。改为使用pass。 [wichert]
为Varnish runner添加默认_ttl为零秒,以避免Varnish处理过去日期的Expires头部的错误。 [newbery]
合并了分支机构/newbery-hostnamepath。 [newbery]
不需要在散列中包含Accept-Encoding。Varnish负责Vary协商。 [newbery]
1.0rc4(2008-03-18)
修复了拼写错误/空格。 [hannosch]
Varnish 1.1.2已发布。 [wichert]
将witsch-foreground-support合并回主干。 [witsch]
使用pidfile。 [wichert]
1.0rc3(2007-09-02)
修复了一个bug,其中选项["location"]在使用之前尚未设置。 [rocky]
在创建Varnish配置期间,使模块名称确定更加健壮,以便指定版本依赖项的配方仍然可以工作。[rocky]
不要使用默认的用户和组。[wichert]
我们需要这些部分:我们使用它们进行文件存储。[wichert]
1.0rc2 (2007-08-29)
添加一个选项以使用现有的配置文件。[wichert]
删除对图像、二进制文件、CSS和javascript的硬编码缓存。这应该由后端服务器或自定义Varnish配置来完成。[wichert]
将Accept-Encoding添加到缓存键中,以便我们可以处理压缩内容。[wichert]
测试bin目录是否存在。这使我们能够编译没有sbin目录的Varnish 1.0。[wichert]
1.0rc1 (2007-08-27)
记录我们在构建Varnish时应用的OSX错误修复。[wichert]
添加一个虚拟的更新方法以防止不必要的重新编译。[wichert]
为Varnish 1.1.1更新。[wichert]
1.0b2 (2007-08-25)
从svn构建时,我们需要运行autogen.sh。[optilude]
重构配方:现在有单独的配方来构建和配置Varnish。这使得在不重新编译的情况下重新配置Varnish成为可能,以及使用已安装的Varnish。[wichert]
将OSX修补代码移动到单独的方法中。[wichert]
对于非GET/HEAD请求使用pass。这使得它更有意义,并解决了Plone站点登录问题。[wichert]
稍微重新组织以提高可读性。[wichert]
也支持Python 2.3。[wichert]
还可以指定用户和组。[wichert]
不要创建源目录 - 我们稍后将其替换为提取的源。[wichert]
如果在OS X上运行,请按以下链接中的说明修补libtool:http://varnish.projects.linpro.no/ticket/118 和 http://thread.gmane.org/gmane.comp.web.varnish.misc/668/focus=669。[optilude]
VCL不是C。即使在单行if语句中也需要花括号。[optilude]
这种重写样式仅在Zope 3上有效 - Zope 3重新发明了这个轮子。[wichert]
添加对If-Modified-Since和If-None-Match请求的支持。感谢newbery的建议。[wichert]
明确指出这个配方没有任何Plone或Zope特有的内容。[wichert]
1.0b1 (2007-08-04)
增加了更多文档。[wichert]
忽略主机头中的端口号信息。[wichert]
在VHM映射中使用Varnish绑定的端口。[wichert]
集中定义所有默认值。[wichert]
添加对Zope虚拟主机的支持。[wichert]
添加对虚拟主机的支持。[wichert]
初始导入Varnish配方。[wichert]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。