我可以将 https 与 Varnish Cache 一起使用吗

Can I use https with Varnish Cache

我可以将 varnish 缓存与 https 一起使用吗?这对性能提升的影响很小吗?优缺点都有什么?我已经为 http 设置了我的 vcl。我现在想用 https 试试这个。

我读过这篇文章,但它是 2011 年的: https://www.varnish-cache.org/docs/trunk/phk/ssl.html

Varnish 本身不支持 SSL,而且在可预见的未来不太可能支持。

要使用 SSL 并且仍然能够使用 varnish 进行缓存,您必须在将请求发送到 varnish 之前终止 SSL。这可以通过例如 HAProxy 或 Nginx 有效地完成。

了解具体如何配置;一个简单的 google 搜索 ssl termination haproxy/nginx 将产生足够多的结果-

您在 HAProxy 中设置了 X-Forwarded-For header。如果已经设置了 X-Forwarded-For header 其他反向代理总是只会添加自己的,left-most 或第一个地址是源地址。你不必考虑这一点,任何读取和使用 X-Forwarded-For headers 的东西都会自动解决这个问题。

您还想设置 X-Forwarded-Proto 以便您可以在 Varnish 中执行各种魔术,例如在不访问后端服务器的情况下重定向不使用 TLS 的流量并分离缓存,因为 Varnish 不使用 TLS ,这可能会导致一些有趣的结果,例如图片未提供,因为当页面通过 HTTPS 提供时,它们是通过 HTTP 请求的。

附带问题,您是否使用 HAProxy 在多个后端之间实际进行负载平衡?如果没有,为什么不终止 Apache 中的 TLS 连接,将其发送到 Varnish,然后再次返回到 Apache?