使用 cloudflare 和 SSL terminator 配置 varnish

使用 cloudflare 和 SSL terminator 配置 varnish

我们目前的情况: 当前情况

现在,我们计划在用户和网站之间创建一个缓存服务器。 拟议计划

据我了解,缓存服务器无法处理 HTTPs 数据。因此,我们必须将数据从 https 转换为 http。因此,我们可以使用两个 SSL 终端进行此转换。 带有 SSL 终止的 Varnish

我可以配置用户和 varnish 服务器之间的 SSL。但我不明白如何配置 Varnish 和 Cloudflare 之间的终止以实现 HTTPs 到 HTTP 的转换。

答案1

目前,Varnish 的开源版本 Varnish Cache 不支持 TLS。

您可以使用 Hitch 等 TLS 代理卸载来自客户端的传入 TLS 请求。请参阅https://www.varnish-software.com/developers/tutorials/terminate-tls-varnish-hitch/有关如何安装和配置它的教程。

但是,Varnish 也不支持后端 TLS 连接。这意味着 Varnish 和 Cloudflare 之间的连接也将通过纯 HTTP 进行。

向其他服务器传输协议信息

鉴于一旦 TLS 连接被 TLS 代理终止,所有流量都会通过纯 HTTP 传输,因此需要传输有关初始客户端连接的元数据。

我最初的建议是在链中的所有代理服务器上启用 PROXY 协议。这意味着:

  • 在 Varnish 上启用 PROXY 协议监听接口
  • 通过 PROXY 协议将流量从 Hitch 发送到 Varnish
  • 通过 PROXY 协议将流量从 Varnish 发送到 Cloudflare

这可确保客户端连接信息在所有跳数中都得到考虑。

但为了安全起见,我还会X-Forwarded-Proto根据 PROXY 信息在 Varnish 中设置标头。请参阅https://www.varnish-software.com/developers/tutorials/terminate-tls-varnish-hitch/#retrieve-tls-information-with-vmod_proxy找到完成此操作的确切 VCL 代码

https://developers.cloudflare.com/fundamentals/get-started/reference/http-request-headers/#x-forwarded-proto了解 Cloudflare 的看法X-Forwarded-Proto

如果您有 Cloudflare 企业计划,您还可以在 Cloudflare 中接收 PROXY 协议请求。请参阅https://developers.cloudflare.com/spectrum/how-to/enable-proxy-protocol/了解更多信息。

只需将该属性添加.proxy_header = 2;到后端default.vcl 即可启用后端连接的 PROXY 协议。

如果您没有 Cloudflare 企业计划,也许使用X-Forwarded-Proto是一个可行的方法。

Varnish Enterprise 中的 TLS 支持

如果您希望在 Varnish 中获得端到端 TLS 支持,您可以向 Varnish Software 购买 Varnish Enterprise 产品的订阅。

https://docs.varnish-software.com/varnish-enterprise/features/backend-ssl/有关 Varnish Enterprise 中后端 TLS 支持的文档。

https://docs.varnish-software.com/varnish-enterprise/features/core-ssl/用于 Varnish Enterprise 中的核心 TLS 支持。

相关内容