我有一个在Ubuntu 18.04 OS上运行的设置。还要使用Apache2和SSL设置服务器。我已经安装了Varnish,但不确定如何在不使用Nginx的情况下使用SSL进行设置。
基本上,我想设置PWA,所以我需要带Varnish缓存的SSL。
非常感谢您提供有关此问题的帮助。
谢谢
您可以使用Hitch终止TLS。 Hitch由Varnish Software开发,其唯一的工作就是成为TLS代理。
您可以通过运行以下命令在Ubuntu 18.04上轻松安装Hitch:
apt-get install -y hitch
您可以在/etc/hitch/hitch.conf
中放置以下配置:
frontend = {
host = "*"
port = "443"
}
#When using TCP/IP
backend = "[localhost]:8443"
#When using Unix Domain Sockets
#backend = "/run/varnish.sock"
pem-file = "/etc/hitch/certs/cert.pem"
proxy-proxy = on
ciphersuites = "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256"
ciphers = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
tls-protos = TLSv1.2 TLSv1.3
ecdh-curve = "X25519:prime256v1:secp384r1"
prefer-server-ciphers = false
在此示例中,证书位于/etc/hitch/certs/cert.pem
下。确保此文件存在并且包含正确的证书信息。如果需要更大的灵活性,The Hitch docs包含有关证书配置的更多信息。
连接到Varnish可以通过TCP / IP或Unix域套接字完成。在上面的示例中选择首选的backend
配置。
如果已安装Varnish 6,甚至可以使用Unix域套接字将Hitch连接到Varnish,这消除了TCP / IP的潜在开销。
如果从Ubuntu的软件包存储库(为Varnish 5.2.1)中安装了Varnish,则可以通过转到https://packagecloud.io/varnishcache/varnish60lts来升级Varnish 6的官方打包版本。
6.0之前的所有版本都是报废
,升级到Varnish 6不仅从UDS角度讲是有意义的,而且从安全性和稳定性的角度来看也是如此。] >[为了确保Hitch可以使用PROXY protocol正确代理请求,您需要调整Varnish的运行时参数:
这些是默认设置:
/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
您需要按以下方式调整
-a
侦听器设置:/usr/sbin/varnishd -a http=:80,HTTP -a proxy=:8443,PROXY -a uds=/run/varnish.sock,PROXY,user=vcache,group=varnish,mode=660 -f /etc/varnish/default.vcl -s malloc,256m
3个
-a
声明执行以下操作:
Hitch是Varnish的goto TLS代理,它提供了非常低的开销,虽然很灵活,但是仍然易于配置。
通过使用PROXY协议,原始客户端IP被自动传输,并且Varnish自动将其设置为X-Forwarded-For
值。
如果您想使用Unix域套接字,以进一步降低开销,Varnish 6为您提供了这些功能
几乎所有涉及TLS和Varnish的解决方案都归结为使用TLS代理。
如果您确实真的不想使用TLS代理,则可以使用Varnish Enterprise。它不是免费开放源代码,但提供了本机TLS实现。