美文网首页
2-Varnish安装与配置

2-Varnish安装与配置

作者: sammeal | 来源:发表于2018-10-25 10:46 被阅读0次

安装Varnish

以下操作系统支持varnish

  • Linux

  • FreeBSD

  • Solaris

支持的Linux发行版有:

  • Ubuntu

  • Debian

  • Red Hat

  • CentOS

可以使用包管理器安装Varnish

下面是可以根据操作系统使用的包管理器列表:

  • APT on Ubuntu and Debian

  • YUM on Red Hat and CentOS

  • PKG on FreeBSD

在Red Hat或者CentOS上安装Varnish

红帽操作系统有三个主要的发行版:

  • 红帽企业版:付费企业版

  • CentOS:免费版

  • Fedora:最新的桌面版本

它们三个都有YUM包管理器,安装过程相同。

如果你使用Red Hat或者CentOS7,可以跟随以下步骤安装Varnish:

yum install epel-release

rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el7.rpm

yum install varnish

如果你使用Red Hat或者CentOS6,可以跟随以下步骤安装Varnish:

yum install epel-release

rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el6.rpm

yum install varnish

配置Varnish

Varnish拥有许多启动设置,可以让你配置与它交互的方式。这些设置位于配置文件中,并在启动时分配给varnishd程序。以下是一些典型的启动设置的例子:

  • Varnish处理传入的HTTP请求的地址和端口

  • Varnish CLI运行的地址和端口

  • 保存缓存策略的VCL文件的位置

  • 保存密钥的文件的位置,用于Varnish CLI进行身份验证

  • 存储后端类型和存储后端大小

  • 锁定设置保护Varnish

  • 将与Varnish交互的后端地址和端口

配置文件

假如你通过包管理器安装了Varnish,那么配置文件将位于以下位置:

image

如果你改变了配置文件内容,那么需要重新加载配置:

sudo service varnish reload

启动设置

现在你已经知道配置文件的唯一目的是将启动设置提供给varnishd程序。理论上你不需要服务管理器:你可以通过运行varnishd来手动的设置参数并启动Varnish。

用法:varnishd [选项]
-a address[:port][,proto]   #http监听地址和端口(默认80)
                            #address: 默认为换回地址(loopback)
                            #port: 端口或服务 (默认80)
                            #proto: HTTP1.0 (默认)
-b address[:port]           #backend: 地址和端口
                            #address: hostname或者IP
                            #port: 端口或服务 (默认80)
-C                          #编译VCL代码为C语言
-d                          #debug
-F                          #在前端运行
-f file                     #VCL脚本
-h kind[,hashoptions]       # Hash specification
                            # -h critbit [default]
                            # -h simple_list
                            # -h classic
                            # -h classic,<buckets>
-i identity                 # varnish示例标识
-j jail[,jailoptions]       # jail specification
                            # -j unix[,user=<user>][,ccgroup=<group>]
                            # -j none
-l vsl[,vsm]                # 共享内存文件大小
                            # vsl: space for VSL records [80m]
                            # vsm: space for stats counters [1m]
-M address:port             # Reverse CLI destination
-n dir                      # varnishd working directory
-p file                     # PID file
-P param[,param...]         # 使参数只读 
-S secret-file              # CLI身份认证用的密钥文件
-s [name=]kind[,options]    # 后端存储规范
                            # -s malloc[,<size>]
                            # -s file,<dir_or_file>
                            # -s file,<dir_or_file>,<size>
                            # -s file,<dir_or_file>,<size>,<granularity>
                            # -s persistent (experimental)
-T address:port             # Telnet 监听地址和端口
-t TTL                      # 缺省值 TTL
-V                          # 版本
-W waiter                   # Waiter implementation
                            # W epoll
                            # -W poll

varnishd文档页面有关于启动参数更详细的信息。

常见启动参数

DAEMON_OPTS="-a :80
-a :81,PROXY
-T localhost:6082
-f /etc/varnish/default.vcl
-S /etc/varnish/secret
-s malloc,3g
-j unix,user=www-data "

Network binding
最重要的网络选项是-a选项。它定义用于连接Varnish的地址、端口和协议。默认情况下,它的值是:6081。这意味着Varnish将被绑定到TCP端口6081上所有可用的网络接口。你可以决定使用哪个协议,默认是HTTP协议。你也可以通过使用多个-a选项来定义多个侦听地址。
CLI地址绑定
-T选项用于定义Varnish CLI侦听的地址和端口。默认Varnish CLI绑定到localhost端口6082上,这意味着CLI只能本地使用。
安全选项
-j选项允许你锁定varnish实例,并在指定的用户下运行子进程。默认情况下,所有进程都将使用varnish用户运行。如果您在一台服务器上运行多个Varnish实例,那么这个选项尤其有用。这样,实例之间就有了更好的进程隔离。
-S选项用来定义密钥文件的位置。这个密钥是Varnish CLI身份验证用的,默认位于/etc/varnish/secret。
存储选项
-s 选项决定缓存中的文件存在哪,默认存在内存中,缓存大小为256MiB。如果Varnish实例耗光了内存,它会应用最近最少使用(LRU)策略来从缓存中移除项目。varnish会计算每个缓存对象命中的次数,当由于内存不足不得不移除对象的时候,就会移除最少使用的对象,直到有足够的空间来存储下一个被请求的对象。
如果你有个专用的Varnish服务器,建议你分配80%的可用内存给Varnish。


VCL文件位置
-f选项指定VCL文件路径,默认在/etc/varnish/default.vcl。
更高级的配置

DAEMON_OPTS="-a :80
-a :81,PROXY
-T localhost:6082
-f /etc/varnish/default.vcl
-S /etc/varnish/secret
-s malloc,3g
-j unix,user=www-data
-l 100m,10m
-t 60
-p feature=_++esi_disable_xml_check
-p connect_timeout=5
-p first_byte_timeout=10
-p between_bytes_timeout=2"

共享日志内存存储
Varnish也分配了一些内存用于日志和统计,这些信息被像varnishlog、varnishtop和varnishstat这样的实用二进制文件所使用。默认会分配1MiB的给Varnish统计计数器(VSC),会分配81MiB给Varnish共享内存日志(VSL),你可以用-l选项来改变它们的值。
默认的Time-to-live
Varnish依赖于expires或cache-control头部字段来确定对象的生存时间。如果没有这些头部字段,并且VCL文件立也没有指定TTL,那么Varnish会默认time-to-live时间为120秒。你可以用-t选项改变这个值。
运行时参数
可以用-P选项来覆盖运行时参数,或者你可以使用-r选项来使这些参数变成只读,这样可以限制用户使用Varnish CLI访问在运行时覆盖它们。
在之前的例子里,我们设置了这些运行时参数:

  • feature=esi_disable_xml_check
  • connect_timeout
  • first_byte_timeout
  • between_bytes_timeout
    第一个参数用来在Edge Side Includes(ESI)处理时禁止XML检查。Varnish使用ESI这个技术来组装内容块来自多个url的页面。
    第二个参数被设置为5秒,意味着Varnish在连接到后端时会等待5秒,如果超时会返回错误,默认是3.5秒。
    第三个参数被设置为10秒,在与后端建立连接后,Varnish会等待10秒,直到第一个字节从后端返回。如果超时会报错,默认是60秒。
    第四个参数被设置为2秒,如果Varnish在两个字节中等待了超过2秒,会报错,默认是60秒。

关于TLS/SSL

传输层安全(TLS),也被称为安全套接字层(SSL),是一组加密协议用来加密网络上的数据通信。在Web环境中,TLS和SSL就是HTTPS中的S。TLS通过加密通信和通过颁发证书建立信任级别来确保连接安全,HTTPS正变得越来越流行。Varnish本身并不支持TLS,他的核心业务是缓存。
在varnish上使用TLS的技巧是,在当通信到达Varnish时中断安全连接。这意味着添加一个TLS/SSL卸载器到你的设置,用来中止TLS连接并使用HTTP与Varnish通信。
缺点是这会添加额外一层复杂度,并可能出问题。此外,对于Web服务器确认原始ip地址有点困难。在正常情况下,Varnish会添加由TLS卸载器发送的HTTP请求头的X-Forwarded-for值,并将该值存储在它自己的X-Forwarded-For头部中。
在Varnish4.1中,添加了PROXY协议。PROXY协议是由HAProxy引入的一种小型协议,这是一个领先的开源负载均衡软件。这个PROXY协议向TCP连接添加了一个前导码(preamble)包含原始客户端的IP地址。这个信息被传递下去,并被Varnish理解。Varnish会自动将这个值添加到X-Forwarded-For头部字段并发送到后端。
此外,Varnish中的PROXY协议实现会使用这个新的原始IP信息在VCL中设置几个变量:

  • 它设置client.ip变量为通过PROXY协议发送的IP地址
  • 它设置server.ip变量为接收初始连接的服务器IP地址
  • 它设置local.ip变量为Varnish服务器的地址
  • 它设置remote.ip变量为位于Varnish前端的机器的IP地址
    HAProxy并不是唯一支持PROXY的TLS卸载程序。Varnish Software发布了Hitch,一个用来中止TLS连接并用HTTP与Varnish通信的TLS代理。然而HAProxy是提供TLS卸载的负载均衡器,而Hitch只有TLS卸载。这取决于你的用例以及你的设置中是否需要负载平衡,你可以选择HAPproxy或者专用的TLS代理。Varnish Plus,高级版本的Varnish,在服务器端和客户端提供了TLS/SSL支持。Varnish Plus中的TLS/SSL代理与Varnish紧密集成,帮助你在不依赖第三方解决方案的情况下提高网站安全性。

总结

Varnish是一个有着强大可伸缩性的工具,拥有大量的选项和可以调优的设置。
在Linux发行版中通过包管理器可以很容易的安装Varnish和运行,而且几乎可以不用调优。

相关文章

  • 2-Varnish安装与配置

    安装Varnish 以下操作系统支持varnish Linux FreeBSD Solaris 支持的Linux发...

  • 软件安装

    Git Bash的安装与配置 Node.js的安装与配置 Git 的安装与配置 VSCode的安装和配置 错误言论...

  • 2018-08-15

    Dart 开发与运行环境配置 本章内容安装与配置Dart SDK安装与配置VSCode验证 1 安装与配置Dart...

  • Android开发环境搭建--Android Studio(长期

    JDK的安装与配置 Android Studio的安装与配置 JDK的安装与配置 JDK的下载与安装 去官网下载J...

  • Mac 下 Flutter 的安装与配置

    Mac 下 Flutter 的安装与配置 Homebrew 安装与更新 Flutter 的安装与配置 Homebr...

  • Drf-解决跨域问题

    目录 安装与配置 localhost/127.0.0.1的区别 1. 安装与配置 安装包 pip install ...

  • 简书第一篇文章

    Windows系统下的安卓软件安装与环境配置 一、java软件的安装与环境配置(即jdk的安装与配置) 1、jdk...

  • node.js安装与配置

    node.js安装与配置 node.js 安装 配置

  • Spring Boot项目环境搭建

    需要用到的软件 一、JDK8自行安装与配置二、 MySQL自行安装与配置三、Maven安装与配置 下载地址:htt...

  • 2018-11-21

    Ubuntu系统下Nginx服务器与Redis安装配置 一、Nginx安装与配置 1.安装 ...

网友评论

      本文标题:2-Varnish安装与配置

      本文链接:https://www.haomeiwen.com/subject/pxlqtqtx.html