米饭粑 米饭粑
  • 首页
  • 好物推荐
    • 干货分享
    • 好物推荐
    • 免费资源
    • 非专业测评
  • 技术架构
    • Linux
    • HTTPS
    • Windows Server
  • 网站建设
    • 免费资源
    • 建站程序
    • 云建站
    • WordPress
  • 网络服务
    • CDN
    • DNS
    • HTTPS
  • 教程&更多
    • 更多教程
    • 资讯新闻
    • 琐琐碎碎
    • 关于米饭
    • 打赏米饭
  • 友情链接
  • 阿里云Ping
首页 › 技术架构 › 通过 Hitch 实现 Varnish-Cache 的 HTTP/2 支持

通过 Hitch 实现 Varnish-Cache 的 HTTP/2 支持

妙正灰
4年前技术架构
2,616 10 1

前言

时至 2017年5月 Varnish-Cache 对 HTTPS和h2 的支持都是不可生产的,不过好消息是预计在 2017年秋季推出可以在生产环节运行 HTTPS和h2 的 Varnish-Cache 6。

不过在正式推出之前,我们可以通过 Nginx 再多一次代理来实现 h2 支持。但是如果我后端是 Apache Httpd,不想再安装一个 Nginx,那么这次我就介绍一个另一个代理工具 —— Hitch 来实现 h2。

介绍

Hitch 是 Varnish-Cache 的开发公司 Varnish Software 开发的基于 libev 的高性能 SSL/TLS 开源代理软件。

主要特性:
* 支持 NPN 或 ALPN 扩展实现 HTTP/2
* 支持 TLS 1.0, TLS 1.1 和 TLS 1.2
* SNI, 支持泛域名证书和非泛域名证书
* 自动 OCSP stapling 支持
* 支持PROXY协议将客户端IP /端口信号发送给后端
* 大规模安全支持,高达 15000 个侦听套接字和 50 万证书
* 支持平滑重新加载证书和监听端点

教程

目前只有 Debian (8)Jessie-Backports 是支持 Hitch1.4 和 OpenSSL 1.0.2 的长期支持的发行版,其他发行版要么 Hitch 太旧不支持 h2 特性,要么 OpenSSL 太旧不支持 ALPN 协议实现 h2,要么就不是 LTS 版本。

所以教程以 Debian 8 为例。SSL 证书通过 ACMETool 安装 Let’s Encrypt 证书。

升级系统

一、在 /etc/apt/source.list 中根据原来的镜像源添加jessie-backports,如果已经存在就不用添加了:

deb http://mirrors.digitalocean.com/debian jessie-backports main

二、 升级软件

apt-get update
apt-get -t jessie-backports upgrade -y

三、安装 OpenSSL 1.0.2

apt-get -t jessie-backports install openssl -y

安装 Varnish-Cache

Varnish-Cache 的安装请查看:

https://www.mf8.biz/varnish-wordpress-make-fast-1/

设置 验证端口

创建 /etc/varnish/acmetool.vcl 文件


backend acmetool {
   .host = "127.0.0.1";
   .port = "402";
}

sub vcl_recv {

    if (req.url ~ "^/.well-known/acme-challenge/") {
        set req.backend_hint = acmetool;
return(pass);
    }
}

在 /etc/varnish/default.vcl 末尾加入

include "/etc/varnish/acmetool.vcl";

添加代理端口

修改 /lib/systemd/system/varnish.service 在 ExecStart 末端加入 -a '[::1]:6086,PROXY'

例如:

ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,512m -a '[::1]:6086,PROXY'

修改 /etc/default/varnish 在 DAEMON_OPTS= 中添加 -a '[::1]:6086,PROXY'

例如:

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,512m \
             -a '[::1]:6086,PROXY'"

输入以下命令重启 Varnish-Cache

systemctl daemon-reload
service varnish restart

Acmetool

一、安装 Acmetool,同样需要通过 Jessie-Backports:

apt-get -t jessie-backports install acmetool

二、设置 Acmetool

acmetool quickstart

选择

1) Let's Encrypt (Live) - I want live certificates

···

2) PROXY - I'll proxy challenge requests to an HTTP server

···

然后就是输入邮箱和一路 y 了

三、生成 dhparams 文件

openssl dhparam -out /var/lib/acme/conf/dhparams 2048

四、申请证书

acmetool want mf8.biz www.mf8.biz

将我的域名替换成你的就行。

设置 Hitch

修改 /etc/hitch/hitch.conf 文件

frontend = "[*]:443"
ciphers  = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"

backend        = "[::1]:6086"
write-proxy-v2 = on
alpn-protos = "h2,http/1.1"
tls-protos = TLSv1.1 TLSv1.2

pem-file = "/var/lib/acme/live/www.mf8.biz/haproxy"

将最后一行中 www.mf8.biz 替换成你的就行。

重启 hitch 就大功告成了!

service hitch start
ACME Debian Hitch HTTP2 HTTPS Let's Encrypt Varnish Varnish-Cache
1
Varnish 5.1 & WordPress 带来内存级加速
上一篇
分享一下整理的早期 DZ、PW、DV 论坛源码和无心宠物插件,并附介绍
下一篇
评论 (10)
再想想
  • 星空游戏

    可惜看不懂

    4年前
  • 撒加

    这是找到的一篇很不错的文章。看完后有几个问题,还请作者指教。
    1、架构是hitch—-varnish 5—-nginx?
    2、hitch中启用了alpn,那是否你的varnish 5是开启了http/2的?
    3、后端使用的nginx是否启用了http/2呢?还是从varnish到nginx走的是http 1.1

    4年前
    • 妙正灰

      @撒加: 1.是这样的架构,的确有点小烦
      2.write-proxy-v2 = on 是声明开启 h2,varnish 5本身还不支持 https,依然也不支持htpp/2
      3.仅 Hitch 这一层开了 HTTPS

      HTTPS 只在443端口开启,所有非443端口的反代都不需要https

      4年前
    • 撒加

      @妙正灰: 不知博主是否方便发下完整的配置呢?就是hitch varnish5 以及后端nginx的主要配置?

      4年前
    • 撒加

      @妙正灰: 另外,我目前的配置让hitch启用alpn,varnish5启用proxy_protocol协议,并且在varnish的backend里增加.proxy_header=1,让nginx开启http2,这样是完全可以让网站支持h2的,但是此时varnish并不会做任何缓存操作,从对你的网页分析,感觉X-Cache和x-store这两个头部都是nginx响应的,并不是varnish响应的吧

      4年前
    • 妙正灰

      @撒加: Varnish的缓存规则需要使用varnish设置

      4年前
    • 撒加

      @妙正灰: 博主方便把主要部分配置分享下吗?

      4年前
    • 妙正灰

      @撒加: 我记得我有单独写过一篇varnish的教程

      4年前
  • DY

    刚刚设置好了hitch,提示一下上面的两处错误:

    /lib/systemd/system/varnish.service
    [code]
    ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,512m -a '[::1]:6086,PROXY'
    [/code]

    /etc/default/varnish
    [code]
    DAEMON_OPTS="-a :80 \
    -T localhost:6082 \
    -f /etc/varnish/default.vcl \
    -S /etc/varnish/secret \
    -s malloc,512m \
    -a '[::1]:6086,PROXY'"

    [/code]

    2年前
    • 妙正灰

      @DY: 已经纠正,多谢提醒

      2年前
标签
Appnode Brotli CDN CentOS CentOS8 Debian DNS ECC ECS Ghost HTTP2 HTTPS IIS IPV6 Linux LiteSpeed MariaDB MySQL Nginx OLS OpenLiteSpeed OpenResty OSS PageSpeed PHP PHP7 QUIC Redis RHEL RHEL8 SSL TokuDB Ubuntu Windows Server 2016 Wordpress 云服务器 升级 域名 对象存储 微软 数据库 百度 笔记本 阿里云 阿里云ACP
文章归档
关注米饭粑微信公众号
10 1
相关文章
OLStack – v1.2.0 新增 ModSecurity 和 ACME 支持
Debian10 快速开启 TCP BBR 实现高效单边加速
在 Ubuntu/Debian 下安装 PHP7.3 教程
Nginx 上部署 TLS1.3、Brotli、ECC双证书实践
关于

稻粢穱麦,挐黄梁些,折腾云计算的经验分享和总结。

菜单
首页 教程 好物 关于 链接 打赏
内页链接
米饭粑 米范导航
Copyright © 2011-2021 米饭粑. Designed by nicetheme. 浙ICP备15006212号-1
  • 首页
  • 教程
  • 好物
  • 关于
  • 链接
  • 打赏
热门搜索
  • 402
  • 113
  • 546
  • 548
  • 460
妙正灰
文科屌丝伪IT男一枚.
337 文章
385 评论
367 喜欢
  • 1
  • 10
  • Top